1、使用 & 符号
bash
# ./XXX.sh &
缺点:关闭当前终端会话窗口,脚本将结束运行
2、使用 nohup 命令
允许注销后继续运行命令,通常与 & 符号结合使用,将输出重定向到一个文件(默认是 nohup.out)。
bash
# nohup ./XXX.sh &
可以指定输出文件:
bash
# nohup ./XXX.sh > output.log 2>&1 &
2>&1 表示将标准错误(stderr)重定向到标准输出(stdout),这样所有输出都会写入 output.log 文件。
3、使用 disown 命令
如果已在前台运行了一个命令,并希望将其移到后台,可以使用 Ctrl-z 暂停该命令,然后使用 bg 将其放到后台,最后用 disown 从 shell 的作业控制中移除它。
运行脚本(假设忘记了添加 &):
bash
# ./XXX.sh
按下 Ctrl-z 暂停脚本:
bash
# ./XXX.sh
......
^Z
[1]+ 已停止 ./XXX.sh
#
将脚本放到后台:
bash
# jobs
[1]+ 已停止 ./start.sh
# bg
[1]+ ./start.sh &
# jobs
[1]+ 运行中 ./start.sh &
从作业控制中移除脚本:
bash
# disown
# jobs
#
使用 jobs 命令查看当前 shell 中的作业列表,确认脚本成功移到后台。
4、使用工具 screen 或 tmux
screen 和 tmux 是两个终端复用工具,允许在一个会话中运行多个窗口或面板,并且可以分离(detach)和重新连接(attach)到这些会话。
4.1 使用 screen
启动一个新的 screen 会话:
screen -S my_session
在 screen 会话中运行脚本:
./XXX.sh
按下 Ctrl-a 然后按 d 来分离(detach)会话。
可以通过以下命令重新连接到会话:
screen -r my_session
4.2 使用 tmux
启动一个新的 tmux 会话:
tmux new -s my_session
在 tmux 会话中运行脚本:
./XXX.sh
按下 Ctrl-b 然后按 d 来分离(detach)会话。
可以通过以下命令重新连接到会话:
tmux attach -t my_session