如何获取 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

您需要知道确切的代码还是只知道它是否失败?

如果您使用 GNU Parallel 而不是 xargs,您可以执行以下操作:

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

什么时候完成 $?将包含有多少作业失败。要获取确切的退出代码,请使用“--joblog file”生成包含退出代码的制表符分隔文件,或使用“--halt 1”获取 $? 中失败的 rsync 的退出代码。

了解更多:

相关内容