私は持っている
parallel --j 2 -- "sh script1" "sh script2"
どこにログインしscript1
、ファイルとscript2
log1
log2
これを次のように変更します:
parallel --j 3 -- "sh script1" "sh script2" "tail -f log1 log2"
tail を使用する理由は、2 つのスクリプトを同時に画面に出力できるようにするためです。出力が乱雑になり、カーソルが失われるなどの問題が発生し、実行のたびにターミナルを再起動する必要があります。
しかし問題は、これが永久に続くことであり、script1 と script2 が完了したら tail を終了させたいのです。どうすればそれができるでしょうか?
答え1
これはまたあなたが望むものではないかもしれませんが、どうでしょうか:
parallel --j 2 -- "sh script1" "sh script2"; tail log1 log2
tail
両方のジョブが完了すると、両方のログ ファイルが待機状態から解除されます。
答え2
実際、私がやるべきことを見つけました:
parallel --j 2 -- "sh script1" "sh script2" &
PID=$!
tail --pid=$PID -f log1 log2
答え3
答え4
parallel --j 2 -- "sh script1" "sh script2" & tail -f log1 log2
これはparallel ...
バックグラウンドで実行され、その後実行されますtail ...
。
Ctrl-C尾を押してもparallel
ジョブには影響しません。
parallel
をフォアグラウンドにする必要がある場合は、 を終了してtail
と入力します。 を再びバックグラウンドに送るには(もう一度fg
実行できるようにするため)、 を押してと入力します。 または、 で終了することもできます。tail
Ctrl-Zbg
kill %%
詳細については、シェルのドキュメントを参照してください。たとえば、bash を使用している場合は、man bash
(all-caps) を実行して検索しますJOB CONTROL
。