私は持っています
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つの操作が完了したら、2つのログファイルを待つ必要はありません。
答え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
前景にインポートする必要がある場合は、killtail
してEnterを押しますfg
。バックグラウンドに戻すには(tail
たとえば、再実行できるように)キーを押して、Ctrl-Zを入力しますbg
。または、次のコマンドで殺すことができますkill %%
詳細については、シェルのドキュメントを参照してください。たとえば、bashを使用している場合man bash
(all-caps)を実行して検索しますJOB CONTROL
。