Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash nohup和简单输出重定向之间的区别_Bash_Redirect_Nohup - Fatal编程技术网

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>日志文件&
(默认情况下,选项2将打印到
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