在 Unix-like 系统中,有几种方法可以在后台运行 shell 脚本:
1. 使用 &
符号
在命令的末尾添加 &
符号可以将脚本放到后台执行:
bash
./your_script.sh &
这会立即返回命令提示符,而脚本会在后台继续运行。
2. 使用 nohup
命令 -- 我使用的是这个方式
nohup
命令可以启动一个进程并将其放到后台运行,同时 nohup
会将输出重定向到日志文件中:
bash
nohup your_script.sh &
默认情况下,nohup
会将标准输出和标准错误输出重定向到 nohup.out
文件中。
3. 使用 screen
或 tmux
screen
和 tmux
是两个流行的终端复用器,它们允许你启动一个会话并将其脱离终端运行:
bash
screen -S your_session_name
./your_script.sh
或者使用 tmux
:
bash
tmux new -s your_session_name
./your_script.sh
然后你可以使用 Ctrl-A
然后按 D
来分离会话,脚本将在后台继续运行。
4. 使用 disown
命令
disown
命令可以将前台运行的进程放到后台:
bash
./your_script.sh &
disown %1
这里 %1
是后台运行脚本的进程ID。
5. 使用 bg
命令
bg
命令用于将挂起的前台作业放到后台:
bash
./your_script.sh
# 按 Ctrl+Z 挂起脚本
bg %1
这里 %1
是挂起的脚本的作业号。
注意事项
-
当脚本在后台运行时,它不会从当前终端读取输入。
-
如果脚本需要用户交互,你可能需要修改脚本以适应非交互环境或使用其他方法处理输入。
-
确保脚本中的错误和输出能够被适当地处理,例如通过日志文件。
-
如果脚本需要在特定条件下停止或重启,考虑使用
cron
、systemd
或其他服务管理工具来管理脚本的生命周期。
使用这些方法,你可以根据自己的需求和环境选择最适合的方式来在后台运行 shell 脚本。