Подтвердить что ты не робот

Как перенаправить весь вывод на/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?

4b9b3361

Ответ 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