Как перенаправить весь вывод на/dev/null?
Я хочу запустить программу (google-chrome) в фоновом режиме, но не позволять ей выводить какие-либо сообщения на терминал.
Я попытался сделать это:
google-chrome 2>&1 1>/dev/null &
Однако терминал все еще заполняется без сообщений, таких как:
[5746: 5746: 0802/100534: ОШИБКА: object_proxy.cc(532)] Не удалось вызвать метод: org.chromium.Mtpd.EnumerateStorag...
Что я делаю неправильно? Как перенаправить все вывод на /dev/null
?
Ответы
Ответ 1
Операторы перенаправления оцениваются слева направо. то, что вы сделали неправильно, сначала был помещен 2>&1
, который указывает 2
на то же место, что и 1
в настоящее время указывает на то, что является локальным экраном терминала, потому что вы еще не перенаправили 1
. Вам нужно сделать следующее:
2>/dev/null 1>/dev/null google-chrome &
или
2>/dev/null 1>&2 google-chrome &
Размещение операторов перенаправления по отношению к команде не имеет значения. Вы можете разместить их до или после команды.
Ответ 2
В разделе Redirection
bash в справочном руководстве говорится:
Оператор [n]>&word
используется [...] для дублирования дескрипторов выходных файлов
Чтобы перенаправить как stderr
, так и stdout
в file
, вы должны использовать форму
&>file
Что касается вашего случая, то это означает замену
2>&1 1>/dev/null
с
&>/dev/null
Ответ 3
Кажется, что синтаксис отличается:
./a.out 1>/dev/null 2>&1 &
См. устройства для FD = 2 различны, когда ./a.out 1>/dev/null 2>&1
и ./a.out 2>&1 1>/dev/null &
1) FD = 2 указывает на /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
2) FD = 2 указывает на /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