我有
parallel --j 2 -- "sh script1" "sh script2"
登入文件的位置script1
和script2
log1
log2
我想將其更改為:
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
。