【问题标题】:Redirecting a Java background process output to /dev/null - is this a good idea?将 Java 后台进程输出重定向到 /dev/null - 这是个好主意吗?
【发布时间】:2011-12-28 17:30:30
【问题描述】:

我有一个 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 &

【问题讨论】:

    标签: java unix solaris


    【解决方案1】:

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

    当 JVM自身崩溃时(与您在 JVM 中的应用程序相反),这是很有价值的一个特定场景。崩溃报告被转储到标准输出,如果您正在捕获标准输出,这很有价值,如果只是告诉您为什么 JVM 消失了。

    【讨论】:

      【解决方案2】:

      如果您不关心这些输出,请执行此类重定向。由于您希望在那里找到一些线索,因此最好将其发送到文件中。您还可以通过调整日志记录设置获得更多见解

      【讨论】:

        猜你喜欢
        • 2012-01-03
        • 2021-04-14
        • 2012-01-04
        • 2019-10-11
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多