我正在使用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而不是覆盖
任何想法
由于
答案 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。