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

标签 java unix solaris

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

如何/从哪里开始调试我当前的问题(进程终止)?我应该尝试将标准输出和标准错误重定向到普通文件吗?

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

最佳答案

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

在 JVM 自身 崩溃时(与 JVM 中的应用程序相反),这是一个有值(value)的特定场景。崩溃报告会转储到 stdout,如果您正在捕获 stdout,那么它很有值(value),即使只是为了告诉您 JVM 消失的原因。

关于java - 将 Java 后台进程输出重定向到/dev/null - 这是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8659181/

相关文章:

linux - 在 bash shell 中解析命令行选项的最佳方法是什么?

UNIX 中的 C : Reading/combining files based upon number of bytes

sockets - Solaris 11 上的 JNI/C 套接字连接错误

java.lang.ClassNotFoundException : org. 代码豪斯.jackson.map.JsonSerializableWithType

java - 你能指定一个泛型类型来子类化另一个泛型类型_和_一个具体的接口(interface)吗?

java - getClass().getName() 不返回 fragment 中的类名

linux - 带有ssh和mv命令的脚本不起作用

java - 如何执行包含具有相同 @BeforeClass 方法的测试类的 testng.xml 文件

unix - 使用 SED 从文件中删除一行并将输出重定向到同一文件

c - Solaris 是如何决定库路径的?