是否有办法将nohup输出重定向到nohup.out以外的日志文件?


112

我经常使用该程序,nohup以便我的进程不受挂断的影响。因此,如果我想使程序program不受挂断的困扰,请使用以下命令

nohup program &

其中,&并将其进程在后台运行。

开始时,nohup给我消息:

nohup:将输出附加到`nohup.out'

除了以外,还有什么方法可以将输出发送到文件nohup.out吗?通常,我想使用来在同一目录中运行许多进程nohup,但是如果执行此操作,则所有输出都将集中到一个nohup.out文件中。

手册页(例如here)似乎没有指定日志文件的选项。你能确认一下吗?另外,您是否对我如何解决此问题有任何想法?


3
晚了一年,但一个好的全面的答案被赋予在这里:stackoverflow.com/questions/4549489/...
拉胡尔·杰哈

Answers:


131

GNU coreutils nohup手册页指示您可以使用常规重定向:

如果标准输入是终端,请从/ dev / null重定向它。如果标准输出是终端,则将输出附加到“ nohup.out”(如果可能),否则附加到“ $ HOME / nohup.out”。如果标准错误是终端,请将其重定向到标准输出。要将输出保存到FILE,请使用“ nohup COMMAND> FILE”。

编辑:起初我没有阅读您的链接;您可能使用的其他版本nohup,尽管本节建议您仍然可以使用常规重定向:

 nohup.out          The output file of the nohup execution if
                    standard  output is a terminal and if the
                    current directory is writable.

您可以将标准输出和标准错误重定向到其他文件:

nohup myprogram > myprogram.out 2> myprogram.err

或到同一文件:

nohup myprogram > myprogram.out 2>&1

54
要具体回答:请使用而不是nohup program > program.out &将输出写到program.outnohup.out
Jim Paris

4
这不是特定于GNU实用程序的,其行为由POSIX指定。
吉尔斯2012年

3
它似乎不起作用。它重定向nohup命令的输出而不是myprogram的输出。
克里斯(Kris)

2
@Kris重定向应在结尾&字符之前进行
yunzen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.