将Java后台进程输出重定向到/ dev / null - 这是一个好主意吗?

时间:2011-12-28 17:30:30

标签: java unix solaris

我有一个Java进程,它在Solaris机器上运行几天后就会死机。应用程序的日志没有任何信息该进程死亡的原因。查看启动Java进程的脚本,我看到stdout和stderr被重定向到/ dev / null。对于Java进程来说这是一个好主意(例如,Java记录内存错误的记录在哪里)?

如何/从哪里开始调试我当前的问题(进程死亡)?我应该尝试重定向stdout& stderr到普通文件?

nohup $JAVA_HOME/bin/java \
-Xms256m \
-Xmx1024m \
-jar $CRON_HOME/cron.jar > /dev/null 2>&1 &

2 个答案:

答案 0 :(得分:3)

绝对将此信息发送到日志文件。将stdout / stderr重定向到/dev/null意味着您丢弃了有价值的信息。将输出发送到一个或两个文件。将stderr重定向到stdout可能更容易,因此您可以交错结果。至于你在哪里记录这些信息,最好问你的系统管理员,因为他们可能会看到这类信息的去向(你不知道你有多少信息已经出来了。

这是有价值的一个特殊情况是当JVM 本身崩溃时(与JVM中的应用程序相反)。崩溃报告被转储到stdout,如果你正在捕获stdout,那么只有告诉你JVM消失的原因才有价值。

答案 1 :(得分:3)

如果您不关心这些输出,请执行此类重定向。当你希望在那里找到一些线索时,将它发送到文件是明智的。您还可以通过调整日志记录设置获得更多见解