バックグラウンドでプログラム(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
にリダイレクトするにはどうすればよいですか?
セクションRedirection
で、bashのリファレンスマニュアルは次のように述べています。
オペレーター
[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/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