nohup:忽略输入并将stderr重定向到stdout


19

我正在使用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

如果看到此消息,会有任何问题吗?这是什么意思,我该如何避免?


2
您是否尝试过:nohup java -jar blaa bla >/tmp/test.out 2>&1 &
Rahul Patil

/tmp/test.out我可以使用而不是使用exhibitor.out。抱歉问到愚蠢的问题,因为我对这些事情
阿森纳

是的..您可以使用..这只是标准错误/输出文件。但是添加后的状态是什么2>&1
拉胡尔·帕蒂尔

Answers:


20

为确保您的应用程序与其终端解除关联-使其不干扰前台命令,并在您注销后继续运行-请nohup确保stdin,stdout或stderr都不是类似于终端的设备。该文档描述了要采取的措施:

如果标准输出是终端,则由命名实用程序写入其标准输出的所有输出都应附加到当前目录中文件nohup.out的末尾。如果无法创建或打开nohup.out进行附加,则输出应附加到HOME环境变量指定的目录中文件nohup.out的末尾。如果两个文件都无法创建或打开以进行追加,则不应调用实用程序。

如果标准错误是终端,则由命名实用程序写入其标准错误的所有输出都应重定向到与标准输出相同的文件描述符。

> exhibitor.out在命令行中键入时,已将标准输出重定向到文件。如果您可以将应用程序的stderr与它的stdout定向到相同的文件,则无需执行其他任何操作。或者,您可以通过添加参数(例如)将stderr重定向到其他文件2> exhibitor.err。(由于有一个未知用户-我的通知中没有显示名称-建议添加此替代方法。)


2
这也是有用的关闭输入的fd手动像这样:</dev/null; Linux将自动执行此操作,但如果没有手动完成,您仍然会在nohup的输出中看到一行内容:nohup: ignoring input
wulfgarpro

17

如果将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 &

4

在我的情况下,我将stdout和stderr重定向,但它还会在日志文件中显示以下内容:

nohup: ignoring input

要删除该警告,您还必须按照以下方式重定向标准输入:

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 &

我知道这个答案肯定对您来说太迟了,但是也许会对其他人有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.