从Perl使用nohup时,如何抑制系统输出?
在Perl中,我使用nohup命令启动一个进程。命令如下:从Perl使用nohup时,如何抑制系统输出?,perl,Perl,在Perl中,我使用nohup命令启动一个进程。命令如下: system("nohup myproc pe88 &"); 这工作正常,过程按预期开始。但是,我想抑制此命令的以下输出-即: Sending output to nohup.out 我必须让这个进程将它的所有输出重定向到nohup.out,但我只是不希望在运行Perl程序时显示它。相反,我想打印我自己的用户友好消息。我尝试了一些变体,但没有任何效果。“将输出发送到nohup.out”消息,因此您可以通过常用方法捕获STDE
system("nohup myproc pe88 &");
这工作正常,过程按预期开始。但是,我想抑制此命令的以下输出-即:
Sending output to nohup.out
我必须让这个进程将它的所有输出重定向到nohup.out,但我只是不希望在运行Perl程序时显示它。相反,我想打印我自己的用户友好消息。我尝试了一些变体,但没有任何效果。“将输出发送到nohup.out”
消息,因此您可以通过常用方法捕获STDERR
- 通过shell:
系统(“nohup myproc pe88 2>/tmp/error_log.txt&”)代码> 如果您根本不需要stderr,请使用
而不是/dev/null
;并添加“/tmp/error_log.txt
”以重定向标准输出/tmp/myout.txt
- 或者通过Perl捕获(不要使用
调用,而是使用system()
或)IPC::Open3
- 那么:
system("nohup myproc pe88 >nohup.out 2>&1 &");
nohup的手册页上说:
如果标准输出是一个终端,
如果需要,将输出附加到“nohup.out”
可能,否则,$HOME/nohup.out。
如果标准误差是一个终端,
将其重定向到标准输出。到
将输出保存到文件,使用'nohup'
命令>文件'
所以,如果显式地将STDOUT和STDERR重定向到nohup.out,那么nohup不会打印该消息。当然,如果nohup.out不可写入,您不会自动回退到$HOME/nohup.out,但是如果这是一个问题,您可以先检查它
注意,如果只重定向STDOUT,nohup将打印一条“将stderr重定向到STDOUT”消息。注意,仅捕获stderr,nohup甚至不会打印“将输出发送到nohup.out”消息。