sh脚本后台运行

在 Unix-like 系统中,有几种方法可以在后台运行 shell 脚本:

1. 使用 & 符号

在命令的末尾添加 & 符号可以将脚本放到后台执行:

bash

./your_script.sh &

这会立即返回命令提示符,而脚本会在后台继续运行。

2. 使用 nohup 命令  -- 我使用的是这个方式

nohup 命令可以启动一个进程并将其放到后台运行,同时 nohup 会将输出重定向到日志文件中:

bash

nohup your_script.sh &

默认情况下,nohup 会将标准输出和标准错误输出重定向到 nohup.out 文件中。

3. 使用 screen 或 tmux

screentmux 是两个流行的终端复用器,它们允许你启动一个会话并将其脱离终端运行:

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 是挂起的脚本的作业号。

注意事项

  • 当脚本在后台运行时,它不会从当前终端读取输入。

  • 如果脚本需要用户交互,你可能需要修改脚本以适应非交互环境或使用其他方法处理输入。

  • 确保脚本中的错误和输出能够被适当地处理,例如通过日志文件。

  • 如果脚本需要在特定条件下停止或重启,考虑使用 cronsystemd 或其他服务管理工具来管理脚本的生命周期。

使用这些方法,你可以根据自己的需求和环境选择最适合的方式来在后台运行 shell 脚本。