我制作了一个用于启动并行 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 是否成功进行。
有谁知道?
xargs 的手册页显示了可能的退出状态值,但是它只能生成单个聚合退出代码,而不是它运行的每个子进程的退出代码。您可以尝试以下选项之一:
- 让 xargs 生成的进程打印其退出代码,并让父任务解析所有退出代码输出以确定每个 rsync 的退出代码。
- Use GNU parallel https://www.gnu.org/software/parallel/man.html与
--joblog
选项。这将创建一个文件,其中包含并行运行的所有命令及其退出代码和其他信息。然后可以解析该文件parallel
退出以确定哪些 rsync 命令失败及其各自的错误代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)