xargsによって開始された並列プロセスの終了コードを取得するには?

xargsによって開始された並列プロセスの終了コードを取得するには?

並列rsyncプロセスを開始するためのスクリプトを作成しました。

#! /bin/bash
LIST=$1
DEST_DIR=$2
RSYNC_OPTS=$3
#echo "rsyncing From=$SRC_DIR To=$DEST_DIR RSYNC_OPTS=$RSYNC_OPTS"
echo $LIST|xargs -n1 -d, echo|xargs -n1 -P 0 -I% rsync --rsync-path='sudo rsync' ${RSYNC_OPTS} % ${DEST_DIR}

その後、rsyncプロセスの終了ステータスを取得するのに問題があります。パイプライン状態の配列を取得することは可能ですが、rsyncが成功したことを確認するには終了コードをキャプチャする必要があります。

答え1

正確なコードを知る必要がありますか、失敗した場合にのみ知ることができますか?

xargsの代わりにGNU Parallelを使用している場合は、次のことができます。

echo $LIST | parallel -d, -P 0 rsync --rsync-path='sudo rsync' ${RSYNC_OPTS} {} ${DEST_DIR}

when_finished$? には失敗したジョブの数が含まれます。正確な終了コードを取得するには、「--joblog file」を使用して終了コードを含むタブ区切りファイルを生成するか、「--halt 1」を使用して$?から失敗したrsyncの終了コードを取得します。

詳細:

  • 簡単な紹介については、紹介ビデオをご覧ください。 https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

  • このチュートリアル(manparallel_tutorial)を見つけてください。あなたのコマンドラインがあなたを愛するでしょう。

関連情報