每个从终端启动的进程都作为执行它的子进程绑定到 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