如何在使用xargs(并行)时获取退出代码

时间:2014-04-14 08:45:57

标签: linux bash rsync 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进程的退出状态。我知道有可能获得一个pipestatus数组,但我需要捕获退出代码以了解rsync是否成功。

有谁知道?

1 个答案:

答案 0 :(得分:8)

xargs的手册页显示了可能的退出状态值,但它只能生成单个聚合退出代码,而不是每个运行它的子代的退出代码。您可以尝试以下选项之一:

  • 让xargs生成的进程打印其退出代码并让父任务解析所有退出代码输出,以确定每个rsync的退出代码。
  • 将GNU parallel--joblog选项一起使用。这将创建一个文件,其中包含与其退出代码和其他信息并行运行的所有命令。然后可以在parallel退出后解析此文件,以确定哪些rsync命令失败以及它们各自的错误代码。