如何在后台将应用程序的输出重定向到/ dev / null


Answers:


230

你用:

yourcommand  > /dev/null 2>&1

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

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1表示重定向stdout/dev/nullAND stderr到当时stdout指向的位置

如果要stderr在控制台上发生并且只能使用stdout,则/dev/null可以使用:

yourcommand 2>&1 > /dev/null

在这种情况下stderr,重定向到stdout(例如您的控制台),然后将原始文件stdout重定向到/dev/null

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

nohup yourcommand &

没有任何参数,所有输出都将落入nohup.out


两者都有效,但是有细微的差别,但是请不要忘记
evildead

嗯,知道了并添加了其他版本
evildead 2011年

如果这是bash文件中的最后一个命令,那么我注意到的一件事是,它使调用该文件的命令控制台没有提示。
丹尼斯

@elig不可能在imo上进行重定向,或者至少不是那么容易,因为重定向通过dup2()发生在紧接之后fork()但之前exec*()。一旦exec*()执行了程序,shell将无法重定向该进程的输出。如果我错了,请纠正我,但是我不知道实现了这种功能的外壳。
evildead

3

这些还将重定向:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

尽管bash手册说第一个是首选。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.