【发布时间】:2012-01-03 10:35:08
【问题描述】:
我想将 Linux 后台应用程序生成的输出重定向到 /dev/null。
我正在使用 kate 文本编辑器,它会在终端上打印我想重定向到 /dev/null 的所有调试消息。
知道怎么做吗?
谢谢
【问题讨论】:
我想将 Linux 后台应用程序生成的输出重定向到 /dev/null。
我正在使用 kate 文本编辑器,它会在终端上打印我想重定向到 /dev/null 的所有调试消息。
知道怎么做吗?
谢谢
【问题讨论】:
你使用:
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 中
【讨论】:
dup2() 的重定向立即发生在 fork() 之后但在 exec*() 之前。一旦exec*() 执行了程序,shell 就无法重定向该进程的输出。如果我错了,请纠正我,但我不知道实现了此类功能的 shell。
yourcommand 2>&1 > /dev/null 和yourcommand > /dev/null 有什么区别?两者似乎都将stderr 重定向到stdout。
这些也会同时重定向:
yourcommand &> /dev/null
yourcommand >& /dev/null
虽然 bash 手册说第一个是首选。
【讨论】: