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의 종료 코드를 가져오십시오.

더 알아보기:

관련 정보