1

BASH で使用するために作成されたスクリプトをデバッグしようとしています。次の行が何をしているのか少し混乱しています。

ffmpeg -threads 1 -f yuv4mpegpipe -i ./tmp/dvd-slideshow_temp_3203/dvdss-pipe-3203 -target ntsc-dvd -r 29.97 -an -aspect 4:3 -s 480 -y -bf 2 -f mpeg2video ./tmp/dvd-slideshow_temp_3203/video.mpg >> /dev/null 2>&1 &

私を本当に混乱させたのは、最後のビットです。

>> /dev/null 2>&1 &

誰かがこの行が何をしているのか教えてくれたらありがたいです.

4

3 に答える 3

4

投稿された行では、3 つのことが起こっています。

これにより、stdout が /dev/null に追加されます。

>> /dev/null

ここで、ファイル記述子 2 (stderr) はファイル記述子 1 (stdout) に向けられます。bash はリダイレクトを右から左に処理するため、標準出力のリダイレクトの後にこれを行うことが重要です。

2>&1

最後に&、バックグラウンドでコマンドを実行します。

于 2012-10-24T06:44:43.490 に答える
1

これを見てください:http ://www.gnu.org/software/bash/manual/bashref.html

>>/dev/null 

これにより、プロセスの標準出力がnullデバイスにリダイレクトされます。dev / nullはそれに書き込まれたすべてのデータを破棄するため、標準出力を破棄するだけです。必要に応じて、代わりにここで別のファイルを使用できます

2>&1

これは言う:同様に標準エラーをリダイレクトする。だからあなたはまたエラーストリームをチャックしている

そして最後に:

&

これにより、プロセスがターミナルインスタンスから切り離されます。これを試して、どのように機能するかを確認してください。

gedit

gedit &
于 2012-10-24T06:47:32.697 に答える
0

は、コマンドの>>出力を何かにリダイレクト (追加) することを示します。あなたの場合、出力を に追加します/dev/null

次の部分は、標準エラー パイプ標準出力パイプ2>&1にリダイレクトしていることを意味します。最後は、コマンドをバックグラウンドに送信することを示します。&

以下は同じことを行い2>> /dev/null 1>> /dev/null &ますが、ご覧のとおり、長くて読みにくいです。

于 2012-10-24T07:43:28.383 に答える