【问题标题】:How to redirect the output of an application in background to /dev/null如何将后台应用程序的输出重定向到 /dev/null
【发布时间】:2012-01-03 10:35:08
【问题描述】:

我想将 Linux 后台应用程序生成的输出重定向到 /dev/null。

我正在使用 kate 文本编辑器,它会在终端上打印我想重定向到 /dev/null 的所有调试消息。

知道怎么做吗?

谢谢

【问题讨论】:

标签: linux ubuntu


【解决方案1】:

你使用:

yourcommand  > /dev/null 2>&1

如果它应该在后台运行,请添加 &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1 表示将stdout 重定向到/dev/null AND stderr 到当时stdout 指向的地方

如果您希望 stderr 出现在控制台上并且只有 stdout 转到 /dev/null 您可以使用:

yourcommand 2>&1 > /dev/null

在这种情况下,stderr 被重定向到 stdout(例如您的控制台),之后原来的 stdout 被重定向到 /dev/null

如果程序不应该终止,您可以使用:

nohup yourcommand &

没有任何参数,所有输出都落在 nohup.out 中

【讨论】:

  • 两者都有效,但略有不同,但请不要记住
  • 嗯好的,添加了其他版本
  • 如果这是 bash 文件中的最后一个命令,我注意到的一件事是它离开了调用该文件的命令控制台而没有提示。
  • @elig 重定向已经运行的应用程序的输出在 imo 中是不可能的,或者至少不是那么容易,因为通过 dup2() 的重定向立即发生在 fork() 之后但在 exec*() 之前。一旦exec*() 执行了程序,shell 就无法重定向该进程的输出。如果我错了,请纠正我,但我不知道实现了此类功能的 shell。
  • yourcommand 2>&1 > /dev/null 和yourcommand > /dev/null 有什么区别?两者似乎都将stderr 重定向到stdout。
【解决方案2】:

这些也会同时重定向:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

虽然 bash 手册说第一个是首选。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 2019-10-11
  • 1970-01-01
  • 2021-04-14
  • 2023-04-08
相关资源
最近更新 更多