nohup和sed,重定向stderr和stdout

时间:2011-12-08 05:04:44

标签: bash unix sed pipe nohup

在我的服务器nohup sleep 1 > nohup.out &上没有提供帮助消息。好。
在我的笔记本电脑上运行相同的命令,我得到:nohup: ignoring input and redirecting stderr to stdout。虽然命令仍然正常运行并完成,但我不明白为什么在我的两台机器之间报告此消息存在差异。幸运的是,我可以通过简单地将stderr和stdout重定向到文件来解决我的笔记本电脑上的这个问题:nohup sleep 1 &> nohup.out &

所以....我正在尝试做的是在我的笔记本电脑上实现一个更有用的命令:

以下在我的服务器上工作正常,并且没有报告任何消息:
nohup ls -1 *.txt | sed -e "s%\(.*\)%/home/user/scripts/script.pl -find \1 %" | sh > nohup.out &

这行代码“nohups”将文件的管道列表导入到sed中,它们连续运行script.pl并在shell中执行。 script.pl将数据打印到多个文件,并将一些信息打印到stdout。我通过将此信息写入名为nohup.out

的文件来捕获此信息

现在,当我在笔记本电脑上运行这个单线程时,我得到nohup: ignoring input and redirecting stderr to stdout。这是预期的(但由于我不知道的原因)。但是当我修改行重定向stderr和stdout时:
nohup ls -1 *.txt | sed -e "s%\(.*\)%/home/user/scripts/script.pl -find \1 %" | sh &> nohup.out &

我仍然收到消息nohup: ignoring input and redirecting stderr to stdout

如何修复我的单行程序,使其在我的笔记本电脑上运行而不会显示消息?

1 个答案:

答案 0 :(得分:10)

我这可能适合你:

nohup ls -1 *.txt 2>/dev/null | .....

原因是nohupstderr发出了警告讯息,因此stderr指示无处2>/dev/null将其抛弃。