11

複数のプロセスを並行して実行する方法を学んでいます

  ./script1.sh param1 1>/dev/null 2>&1 &
  pid1=$!
  ./script1.sh param2 1>/dev/null 2>&1 &
  pid2=$!

ここで何が起こっているのかわかりません:

   1>/dev/null 2>&1
   pid1=$!
4

1 に答える 1

19

標準出力 (ファイルハンドル 1) を /dev/null にリダイレクトします

1>/dev/null

標準エラー (ファイルハンドル 2) を標準出力にリダイレクトします。

2>&1

最新のバックグラウンド コマンドの PID を変数 pid1 に割り当てます (詳細は bash のマニュアル ページ、特殊パラメーターを参照) 。

pid1=$!

その結果、標準出力と標準エラーの両方が /dev/null にリダイレクトされます。

その他の例は、http: //tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.htmlにあります。

通常、プログラムには、標準入力、標準出力、および標準エラーの 3 つのファイルが開かれます。標準ストリームまたはリダイレクトの詳細については、wikipedia を参照してください。

スクリプトの次の部分:

./script1.sh param1 1>/dev/null 2>&1 &
pid1=$!

平易な英語に翻訳:

現在のディレクトリから、パラメーターを指定し./てプログラムを実行し、標準出力/dev/nullにリダイレクトし、標準エラー標準出力にリダイレクトして、プログラムをバックグラウンドで実行させます。バックグラウンドで開始されたばかりのプログラムの PID を pid1 に割り当てます。script1.shparam1 1>/dev/null 2>&1&pid1=$!

于 2013-11-13T20:52:23.460 に答える