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

nohup program &


,其中&将进程置于后台。

启动时,nohup给我以下消息:


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


是否有任何发送方式输出到nohup.out以外的文件?通常,我想使用nohup在同一目录中运行许多进程,但是如果执行此操作,则所有输出都将集中在一个nohup.out文件中。

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

评论

迟了一年,但是这里给出了一个很好的综合答案:stackoverflow.com/questions/4549489/…

#1 楼

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


评论


这不是特定于GNU实用程序的,其行为由POSIX指定。

–吉尔斯'所以-不再是邪恶的'
2012年8月20日在22:33

它似乎不起作用。它重定向nohup命令的输出而不是myprogram的输出。

–克里斯
18-3-7的16:21

@Kris重定向应在结尾和字符之前进行

– yunzen
18年7月7日在8:29

#2 楼

在此处添加Jim注释作为答案,以提高可见性。


使用nohup program > program.out &将输出写入program.out而不是nohup.out


#3 楼

nohup程序&> program.out&


program.out,如果您不想在后台运行作业。当我一次运行多个作业并且想要限制它时,我会使用它。