Nohup附加输出和错误而不是覆盖

时间:2012-04-16 06:50:26

标签: java bash logging nohup

我正在使用nohup将java输出和错误附加到同一个日志文件中。问题是它写入一个输出,然后它会覆盖日志文件以查找错误并删除输出。

nohup命令是

nohup java Daemon 1000 >logs/wrapper.log 2>logs/wrapper.log &

这是我想从Daemon.java

登录wrapper.log的消息
System.out.println("This is output that should go to the file");

System.err.println("This is error that should go to the file");

但只有最后一条消息写在文件中。最合理的答案是知道如何为输出和错误附加wrapper.log而不是覆盖

任何想法

由于

2 个答案:

答案 0 :(得分:4)

最便携(以及我首选的方法)是:

cmd >>logs/wrapper.log 2>&1 &

>>FD重定向随O_APPEND标志一起打开。大提琴的答案是一个bashism(和大多数kshes和zsh)一次重定向stdout和stderr,但是没有解决在追加模式下打开的问题。

请参阅:http://mywiki.wooledge.org/BashPitfalls#somecmd_2.3E.261_.3Elogfile和相关链接。

编辑:我发现这实际上并没有解决追加问题。我会编辑页面。链接仍然相关。

答案 1 :(得分:2)

最有可能的是,错误输出会覆盖标准输出,因为您都写入同一个文件。 尝试类似的东西: nohup java Daemon 1000 &> logs/wrapper.log &

&>适用于某些shell(无论如何都是bash,不确定tcsh / zsh / ...),所以试试看或者告诉我们你正在使用哪个shell。