web-dev-qa-db-ja.com

すべての出力を/ dev / nullにリダイレクトする方法は?

バックグラウンドでプログラム(google-chrome)を実行したいが、端末にメッセージが出力されないようにします。

私はこれを試しました:

google-chrome 2>&1 1>/dev/null &

ただし、次のようなメッセージが表示されずに端末はいっぱいになります。

[5746:5746:0802/100534:ERROR:object_proxy.cc(532)]メソッドの呼び出しに失敗しました:org.chromium.Mtpd.EnumerateStorag ...

何が間違っていますか? all出力を/dev/nullにリダイレクトするにはどうすればよいですか?

58
Benubird

セクションRedirectionで、bashのリファレンスマニュアルは次のように述べています。

オペレーター [n]>&Wordは、出力ファイル記述子を複製するために使用されます[...]

stderrstdoutの両方をfileにリダイレクトするには、次の形式を使用する必要があります。

&>file

あなたの場合に関して、それは代替を意味します

2>&1 1>/dev/null

&>/dev/null
37
user1146332

構文が異なるようです:

./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
1
Sergei Kurenkov