Bash nohup和简单输出重定向之间的区别
以下启动后台作业的方法有什么区别Bash nohup和简单输出重定向之间的区别,bash,redirect,nohup,Bash,Redirect,Nohup,以下启动后台作业的方法有什么区别 /long\u job.sh>日志文件& nohup./long\u job.sh>日志文件& (默认情况下,选项2将打印到nohup.out,或者您可以重定向到您选择的文件名) nohup的优点是什么?我测试了以下shell脚本作为long\u job.sh的代理,并退出了终端(使用ctrl-D) 有一个类似的标题,但它询问stdout和stderr重定向之间的区别 编辑:不讨论显式文件重定向。如果没有重定向,当shell退出时,子进程将死亡,因为它没有要
/long\u job.sh>日志文件&
nohup./long\u job.sh>日志文件&
nohup.out
,或者您可以重定向到您选择的文件名)
nohup的优点是什么?我测试了以下shell脚本作为long\u job.sh的代理,并退出了终端(使用ctrl-D
)
有一个类似的标题,但它询问stdout和stderr重定向之间的区别
编辑:不讨论显式文件重定向。如果没有重定向,当shell退出时,子进程将死亡,因为它没有要打印的标准输出。但是使用重定向,它不需要打开shell窗口。在操作上,上述两种方法实现了相同的结果(即使在终端关闭后也会运行作业)。我的问题是这两种方法之间的区别。列出的方法的区别取决于shell中huponexit
变量的状态。此变量的状态通过shopt | grep huponexit
获得
当huponexit
为off
时,列出的方法在操作上是相同的——都将标准输出重定向到logfile
,并在退出shell时继续运行
当huponexit
处于打开状态时(shopt-s huponexit
),shell将向子进程发送挂起(hup)信号,使其终止。nohup
方法继续有效
由于您可能并不总是拥有控制huponexit
的权限,因此nohup
方法对于长时间后台作业更安全 为什么不阅读nohup的手册页可能重复?@EdHeal我在手册页中找不到了解这两种方法之间差异的信息。在nohup的手册页中,“如果标准输入是终端,请从/dev/nul重定向它”“运行不受挂断影响的命令”在命令行上运行时,这两种方法都不正确
while [ 1==1 ]; do
jot -r -c 4 A Z | rs -g 0 4
echo $$ # Echo pid
sleep 2
done