txtファイルがあり、file.txt
各行がPythonスクリプトであるとします。例えば
python a1.py python a2.py python a3.py
次のコマンドは正確に何をしていますか?
cat file.txt | xargs -n 1 -P $NUM_CPUS bash -c
答え1
説明する:
cat file.txt | xargs -n 1 -P $NUM_CPUS bash -c
cat file.txt
file.txt
- パイプラインの次のプログラムに渡されたファイルの内容をリンクします。xargs -n 1
- STDINで一度に1つの引数を受け入れます(前のコマンド出力)。-P $NUM_CPUS
$NUM_CPUS
- 一度に複数のプロセスを実行する(プロセスごとに1つの入力ラインを呼び出す)bash -c
- 現在のパラメータで実行されるコマンド
答え2
整数が含まれていると仮定すると、$NUM_CPUS
このコマンドは最大数の並列非対話型bash
シェルを実行します(これはその機能-P
です)。各シェルは入力ファイルで1行を実行します-n 1
。
cat
このコマンドは必要ありません。
xargs -n 1 -P "$NUM_CPUS" bash -c <file.txt