當其他進程完成時退出 tail

當其他進程完成時退出 tail

我有

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

登入文件的位置script1script2log1log2

我想將其更改為:

parallel --j 3 -- "sh script1" "sh script2" "tail -f log1 log2"

使用 tail 的原因是當我允許兩個腳本同時在螢幕上輸出時 - 輸出變得一團糟並且我丟失了遊標等問題 - 我幾乎在每次執行後都需要重新啟動終端。

但問題是,現在這將永遠持續下去,我希望 tail 在 script1 和 script2 完成時退出。我怎樣才能做到這一點?

答案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-Z並鍵入bg。或者你可以用以下命令殺死它kill %%

有關更多詳細信息,請參閱您的 shell 文件。例如,如果您使用的是 bash,請執行man bash並蒐索 (all-caps) JOB CONTROL

相關內容