Como obter o código de saída de um processo paralelo lançado pelo xargs?

3

Eu fiz um script para iniciar o processo paralelo de 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}

Depois, tenho problemas para obter o status de saída do processo de rsync. Eu sei que é possível obter uma matriz de pipestatus, mas eu preciso pegar o código de saída para saber se o rsync foi feito com sucesso ou não.

    
por bLuEdDy 14.04.2014 / 09:51

1 resposta

2

Você precisa saber o código exato ou apenas se ele falhou ou não?

Se você usa o GNU Parallel em vez do xargs, você pode fazer:

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

Quando conclui $? conterá quantos trabalhos falharam. Para obter o código de saída exato, use '--joblog file' para gerar um arquivo separado por tabulação, incluindo o código de saída, ou use '--halt 1' para obter o código de saída do rsync com falha em $ ?.

Para saber mais:

  • Assista ao vídeo de introdução para uma introdução rápida: link

  • Percorra o tutorial (man parallel_tutorial). Você linha de comando vou te amar por isso.

por 14.04.2014 / 13:18