スクリプトでGNU parallelを使用しようとしていますが、-jX X jobsの後にのみ出力が開始されることに気付きました。
# Only spawns cat after 100 seconds
(echo a; sleep 100) | parallel -j1 --lb cat
# Starts instantly
(echo a; echo a; sleep 100) | parallel -j1 --lb cat
最初のジョブは他のジョブより先に起動する必要があります(他のジョブを並列パイプとして定義し、出力を別のスクリプトに送るため)が、並列ジョブはさらに3つのジョブを待機しています。
このパターンを変更する方法はありますか?
答え1
20181222 以降にアップグレードしてください。
# Spawns a instantly
(echo a; sleep 100) | parallel -j1 --lb cat
# Starts a and b instantly, outputs a immediately, b after 100 sec
(echo a; echo b; sleep 100) | parallel -j1 --lb cat
# Starts a and b instantly, outputs a and b immediately (but output may be mixed)
(echo a; echo b; sleep 100) | parallel -j1 --lb cat