请让我知道任何显示的例子nohup
甚至在之后还在为一个程序工作logout
。我尝试在没有nohup
命令的情况下使用它在后台运行脚本,即使在logout
.
例子:
ping google.com > ping_result &
然后我注销并再次登录,我发现文件的内容正在增加。这意味着 ping 仍在运行。然而,不应该。
答案1
在终端中运行此命令,
/bin/sleep 1000 &
在不同的终端中,检查进程是否正在运行:
pgrep -fa sleep
(流程如图所示)
现在关闭第一个终端,或注销。再检查一遍:
pgrep -fa sleep
(没有显示)
nohup
重复添加到第一个命令的 步骤:
nohup /bin/sleep 1000 &
您将看到第二个检查显示该进程仍在运行。
答案2
答案3
nohup 不会“杀死”(防止信号挂起,又名 SIGHUP amd 查看 man 7 信号)在没有终端时尝试写入终端的进程。
当进程不写入终端时,它不需要 nohup - 它会一直存活到终止或完成。然而,许多进程在执行期间尝试写入终端,如果没有终端(例如由于注销),它们会抛出“挂起”信号并死亡。 nohup 可以防止这种情况发生,但是您可以通过将所有输出重定向到文件并将其置于后台(命令 &> 文件 &)来手动防止这种情况发生。
nohup 只是为您自动执行此过程。
nohup 还可以防止终端输入因同样原因丢失时终止,但这种用法不太常见(nohup 将 /dev/null 重定向到输入,而不是终端/标准输入)
答案4
我想出了远程登录的解决方案:
如果使用 nohup 启动进程的终端并且该终端已被终止,则该进程也将继续运行。但是,如果您只是使用exit
或Ctrl+注销D,则不会,但如果您已经退出图形登录,则注销也将起作用。