所以我有一種情況,我運行了大量與並行命令並將輸出管道輸送到另一個消耗輸出的腳本。我遇到的問題是執行輸出處理的腳本需要知道特定命令何時執行完畢。GNU並行 - 檢測並行運行的命令已完成
我正在使用--tag
選項,以便我知道什麼命令已生成輸出,但目前我必須等到並行完成所有命令的運行後才能知道我不會再從某個特定的輸出中獲得輸出命令。從我對平行的理解中,我看到以下可能的解決方案,但沒有一個真正適合我。
我可以組輸出線與
--line-buffer
選項,以便它 看起來像依次運行。然後每當我看到輸出 我知道上一個命令已完成,但 這樣做會減慢我,因爲一個命令可能需要30秒到 完成,而在它之後可能有20個其他命令只需要 一秒鐘並且我希望儘可能接近實時地處理它們,如 。我可以將我的命令封裝在一個輸出'Process 與某些ID DONE'的小bash腳本中以獲取命令完成的通知。我 不太喜歡這個,因爲我一次運行幾百個命令 ,並不是真的想要添加所有這些額外的bash 進程。
我真的很希望我只是在文檔中缺少一些東西,並且在那裏有一個標誌來做我正在尋找的東西。
我的理解是並行是在perl中實現的,我很喜歡,但是除非它完全有必要,否則不必自己添加功能。
任何幫助或建議,非常感謝。
也許你可以試試'stdbuf -o0並行...'(或類似)來禁用任何行緩衝是'parallel'是幹什麼的? – bishop