在后台运行 Bash 脚本并退出终端

24 terminal

是否可以启动命令或 Bash 脚本退出终端而不中断命令?

我的解决方案是在一天中的特定时间运行 cron,但我确信有更简单的方法。

Tho*_*hor 54

为避免退出信号传播到终端和 shell 的子进程,请使用 运行命令nohup,即:

nohup cmd &
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案。如果没有 nohup,启动的进程仍被视为终端进程的“子进程”,因此如果终端关闭则终止。 (3认同)
  • `cmd & disown` 也可以工作,因为 `&` 被视为一个 `;` 命令分隔符。disown 命令删除 bash shell 会话和后台命令之间的连接。 (3认同)
  • zsh 对此有一个简写:`cmd &|`。 (2认同)

小智 6

如果你想在退出终端后每隔一秒左右在后台运行一个特定的命令或文件,你可以试试这个简单的小东西;

nohup watch -n5 'bash script.sh' &
Run Code Online (Sandbox Code Playgroud)

这将每 5 秒运行一次 scipt.sh。


小智 6

使用screen

screen -S <session name> -d -m <your command>
Run Code Online (Sandbox Code Playgroud)

之后,您可以退出终端,也可以通过以下方式重新连接到它:

screen -r <session name>
Run Code Online (Sandbox Code Playgroud)

更多信息:参考