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