我知道,nohup
作为一个二进制文件,它可以从任何 shell 访问。但是exec
内置的可能存在于每个 shell 中。
是否有理由更喜欢其中一个?
Gil*_*il' 123
鱼和自行车哪个更好?nohup
并exec
做不同的事情。
exec
用另一个程序替换外壳。用exec
一个简单的后台作业是没有用的:exec myprogram; more stuff
与替换外壳myprogram
,因此不运行more stuff
,不像myprogram; more stuff
它运行more stuff
时myprogram
终止; 但是在后台exec myprogram & more stuff
启动myprogram
然后运行more stuff
,就像myprogram & more stuff
.
nohup
在忽略 SIGHUP 信号的情况下运行特定程序。当终端关闭时,内核将 SIGHUP 发送到该终端(即 shell)中的控制进程。Shell 依次向后台运行的所有作业发送 SIGHUP。nohup
如果终端死机(例如,如果您远程登录并且连接断开,或者如果您关闭终端模拟器,就会发生这种情况),运行带有可防止它以这种方式被杀死。
nohup
还将程序的输出重定向到文件nohup.out
. 这可以避免程序因无法写入其输出或错误输出而死亡。请注意,nohup
这不会重定向输入。要完全断开程序与启动它的终端的连接,请使用
nohup myprogram </dev/null >myprogram.log 2>&1 &
Run Code Online (Sandbox Code Playgroud)
小智 21
exec &
=> 将进程作为后台进程执行,因此您可以继续使用相同的终端进行其他作业。
nohup
=> 避免所有 SIGHUP(终止信号)并继续执行,即使您的终端已关闭。
exec
进程在SIGHUP
收到a 时终止,但nohup
进程继续。
归档时间: |
|
查看次数: |
194794 次 |
最近记录: |