他のプロセスが完了すると、tailを終了

他のプロセスが完了すると、tailを終了

私は持っています

parallel --j 2 -- "sh script1" "sh script2"

ログインファイルのscript1場所script2log1log2

私はそれを次のように変更したいと思います:

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

関連情報