我正在后台启动我的应用程序,nohup
如下所述 -
root@phx5qa01c:/bezook# nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out &
[1] 30781
root@phx5qa01c:/bezook# nohup: ignoring input and redirecting stderr to stdout
但每次看到这条信息——
nohup: ignoring input and redirecting stderr to stdout
如果我看到这条消息会有什么问题吗?这是什么意思以及我该如何避免它?
答案1
为了确保您的应用程序与其终端解除关联 - 以便它不会干扰前台命令并在您注销后继续运行 -nohup
确保 stdin、stdout 和 stderr 都不是类似终端的设备。这文档描述了它采取的行动:
如果标准输出是终端,则指定实用程序写入其标准输出的所有输出都应附加到当前目录中 nohup.out 文件的末尾。如果无法创建或打开 nohup.out 进行追加,则输出应追加到 HOME 环境变量指定的目录中 nohup.out 文件的末尾。如果两个文件都无法创建或打开以进行附加,则不应调用实用程序。
如果标准错误是终端,则指定实用程序写入其标准错误的所有输出都应重定向到与标准输出相同的文件描述符。
> exhibitor.out
当您输入命令行时,您将 stdout 重定向到文件。如果您同意将应用程序的 stderr 定向到与其 stdout 相同的文件,则无需执行任何其他操作。或者,您可以通过添加参数(例如2> exhibitor.err
. (感谢一位未知用户 - 我的通知没有显示名字 - 建议包含此替代方案。)
答案2
如果将 std 错误重定向到 std 输出,则可以摆脱该消息:
nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out 2>&1 &
答案3
在我的情况下,我重定向 stdout 和 stderr,但它还在日志文件中显示以下内容:
nohup: ignoring input
要删除该警告,您还必须重定向 stdin,如下所示:
nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out 2>&1 </dev/null &
我知道这个答案对你来说肯定已经晚了,但也许它会对其他人有所帮助。