据我所知,nohup
可以保持流程正常运行,而无需关心终端的退出。但是我发现当我在后台运行一个进程(没有nohup
)最后使用&符号(&
),然后从终端退出时,我仍然可以在机器中找到进程。< / p>
这是一个简单的例子;我运行以下命令,然后退出终端:
ping localhost &
但是,我找到了&#34; ping&#34;虽然我在这里没有使用nohup
,但仍在机器中运行的进程。我误解了nohup
的真实用法吗?
答案 0 :(得分:6)
您从会话注销后看到您的进程仍在运行的原因可能是您的shell在注销时不会发送sighup。 您可以通过运行确认:
shopt | grep hupon
我认为它会返回类似huponexit off
...
每个Linux / shell都不能保证这样做,所以为了保持安全并让你的脚本可移植,我建议使用nohup
。 E.g。
nohup ping localhost &
要确认您还可以通过运行
启用huponexit
shopt -s huponexit
然后在没有nohup
的情况下运行命令,注销/退出shell并检查您的进程是否仍在运行。