How can I redirect all output to /dev/null?
BashPipeOutput RedirectDev NullBash Problem Overview
I want to run a program (google-chrome
) in the background, but prevent it from outputting any messages to the terminal.
I tried doing this:
google-chrome 2>&1 1>/dev/null &
However, the terminal still fills up without messages like:
> [5746:5746:0802/100534:ERROR:object_proxy.cc(532)] Failed to call method: org.chromium.Mtpd.EnumerateStorag...
What am I doing wrong? How do I redirect all the output to /dev/null
?
Bash Solutions
Solution 1 - Bash
Redirection operators are evaluated left-to-right. You wrongly put 2>&1
first, which points 2
to the same place, as 1
currently is pointed to which is the local terminal screen, because you have not redirected 1
yet. You need to do either of the following:
2>/dev/null 1>/dev/null google-chrome &
Or
2>/dev/null 1>&2 google-chrome &
The placement of the redirect operators in relation to the command does not matter. You can put them before or after the command.
Solution 2 - Bash
In the section Redirection, Bash's reference manual says:
> The operator [n]>&word
is used [...] to duplicate output file descriptors
To redirect both standard error and standard output to file
you should use the form
&>file
With regard to your case, that means substitute
2>&1 1>/dev/null
with
&>/dev/null
Solution 3 - Bash
It seems that syntax is different:
./a.out 1>/dev/null 2>&1 &
See the devices for FD = 2 are different when ./a.out 1>/dev/null 2>&1
and ./a.out 2>&1 1>/dev/null &
-
FD=2 points to /dev/null
>./a.out 1>/dev/null 2>&1 & [1] 21181 >lsof -p
pidof a.out
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME a.out 21181 xxxxxxxxxxxxxxx 0u CHR 136,43 0t0 46 /dev/pts/43 a.out 21181 xxxxxxxxxxxxxxx 1w CHR 1,3 0t0 3685 /dev/null a.out 21181 xxxxxxxxxxxxxxx 2w CHR 1,3 0t0 3685 /dev/null -
FD=2 points to /dev/pts/43
>./a.out 2>&1 1>/dev/null & [1] 25955 >lsof -p
pidof a.out
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME a.out 25955 xxxxxxxxxxxxxxx 0u CHR 136,43 0t0 46 /dev/pts/43 a.out 25955 xxxxxxxxxxxxxxx 1w CHR 1,3 0t0 3685 /dev/null a.out 25955 xxxxxxxxxxxxxxx 2u CHR 136,43 0t0 46 /dev/pts/43