【问题标题】:nohup and sed, redirecting stderr and stdoutnohup 和 sed,重定向 stderr 和 stdout
【发布时间】:2011-12-08 05:04:43
【问题描述】:

在我的服务器上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 将数据打印到多个文件,并将一些信息打印到标准输出。我通过将其写入名为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

如何修复我的 one-liner 以使其在我的笔记本电脑上运行而不会收到显示的消息?

【问题讨论】:

  • 您的服务器正在运行什么系统(操作系统和版本)?笔记本电脑呢?
  • @JonathanLeffler 我的笔记本电脑:Ubuntu 11.04。我的服务器:CentOS release 5.2

标签: bash unix sed pipe nohup


【解决方案1】:

我这可能对你有用:

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

原因是nohupstderr 发出警告消息,因此将stderr 指向无处2>/dev/null 会放弃它。

【讨论】:

  • 天才!您的解决方案完美运行。我确实尝试将 stderr 写入 /dev/null,但没想到在第一个管道之前添加它。我只是在我的单衬里的最后一根管子之后才尝试使用它。谢谢!
猜你喜欢
  • 2014-07-22
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 2014-01-09
  • 2015-08-18
  • 2020-06-02
相关资源
最近更新 更多