fileにコマンドリストがあるとしましょうcmd_file
。
次のコマンドでこれらのコマンドを実行します。
cat cmd_file | parallel -k -I {} "{}"
コマンドの1つが失敗しました。すべてのコマンドはまったく同じCLIツールとは異なる入力を使用します。
コマンドリストをコマンドジェネレータループ(より複雑にする)に置き換えて誤ったコマンドを見つけるには、一度に1つのコマンドを実行する必要があります。
for ...; do
# assemble the vars for the command
echo "<command>"
<command>
done
たとえば、失敗したコマンドを並列に表示したり、stderrで実行順序を表示したりするメカニズムはありますか?
答え1
あなたは導くことができますparallel
実行された各コマンドを標準出力または標準エラーとして印刷します。man
ページから:
-v Print the job to be run on stdout (standard output).
Can be reversed with --silent. See also -t.
-t Print the job to be run on stderr (standard error).
たぶん:
for ...; do
# assemble the vars for the command
echo "<command>"
done |
parallel -v -k
または準備ができたらcmd_file
:
parallel -v -k < cmd_file
または同様のものがあなたのニーズに適しているでしょう。
答え2
コマンドが終了値を設定すると、--joblog
それはあなたの友人です。
答え3
たとえば、失敗したコマンドを並列に表示したり、stderrで実行順序を表示したりするメカニズムはありますか?
GNU Parallel 20220722には以下が含まれています--colour-failed
。
parallel --tag --colour-failed "echo foo {}; {}" ::: true true false false true