我使用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,而不是覆盖
有什么想法吗?
谢谢
发布于 2012-04-16 15:22:40
最可移植的(也是我首选的方法)是:
cmd >>logs/wrapper.log 2>&1 &打开带有O_APPEND标志的>>FD重定向。cello的答案是bashism (以及大多数kshes和zsh)同时重定向stdout和stderr,但不能解决在append模式下打开的问题。
请参阅:http://mywiki.wooledge.org/BashPitfalls#somecmd_2.3E.261_.3Elogfile和关联链接
编辑:我发现这实际上并没有解决附加问题。我将编辑该页面。这些链接仍然是相关的。
发布于 2012-04-16 15:05:30
最有可能的情况是,错误输出会覆盖标准输出,因为两个文件都写入同一文件。尝试如下所示:nohup java Daemon 1000 &> logs/wrapper.log &
&>可以在一些shell上运行(bash在任何情况下,不确定tcsh/zsh/...),所以尝试一下或者让我们知道您使用的是哪个shell。
https://stackoverflow.com/questions/10169789
复制相似问题