使用 nohup 命令远程启动进程

每个从终端启动的进程都作为执行它的子进程绑定到 shell。
在父程序终止的情况下,子进程也将因父进程终止而终止。

当用户需要远程运行进程并在注销后让进程运行时,这不是特别期望的行为。
为此,存在 nohup 命令。
nohp 确保进程不绑定到任何特定的 shell,因此用户可以通过注销来终止 shell 进程,并且使用 nohup 执行的进程将保持活动状态。
nohup 的语法如下:

$ nohup my-command > my-command.out &

请注意,将创建输出文件,因为这将捕获来自 my-command 的任何 STDOUT。
& 在后台运行 my-command 时返回一个 shell。
下面是一个测试这个理论的小例子:

使用 nohup 运行 yes 命令并将输出重定向到 /dev/null。
确保在命令末尾使用 & 在后台运行命令:

$ nohup yes > /dev/null &
[1] 3594

现在关闭或者从终端注销,打开另一个会话并运行以下 linux 命令:

ps aux | grep yes
jack      3594 98.3  0.0   3016   504 ?        R    11:06   1:23 yes

请注意,进程 PID 3594 仍在运行。
要终止该进程,请运行:

kill 3594
日期:2020-07-07 20:55:00 来源:oir作者:oir