2

我正在使用 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 而不是覆盖

有任何想法吗

谢谢

4

2 回答 2

4

最便携(也是我最喜欢的方法)是:

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

重定向以>>FDO_APPEND 标志打开。大提琴的答案是一次重定向stdout和stderr的bashism(以及大多数kshes和zsh),但不能解决以附加模式打开的问题。

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

编辑:我看到这实际上并没有解决附加问题。我将编辑页面。链接仍然相关。

于 2012-04-16T07:22:40.090 回答
2

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

&>适用于某些 shell(无论如何都是 bash,不确定 tcsh/zsh/...),因此请尝试一下或让我们知道您使用的是哪个 shell。

于 2012-04-16T07:05:29.807 回答