제 상황에서는 백그라운드에서 rsync와 tar를 실행하는 하나의 쉘 스크립트가 있습니다. Rsync는 파일을 전송하는 데 사용되며 tar는 rsync가 완료된 후 압축을 수행합니다. 내 문제는 rsync의 pid를 모니터링하는 방법이며 rsync의 pid가 더 이상 존재하지 않을 때 tar 명령에 시작하도록 지시하는 것입니다.
쉘 스크립트는 다음과 같습니다:
rsync data.log B/ &
tar data.tar.gz B/data.log &
답변1
매우 쉽습니다. 다음을 사용하여 pid 변수를 저장해야 합니다.
PID_1=$!
ID를 확인하려면 진행 상황이 여전히 실행 중인지 확인하려면 다음과 같이 kill -0을 실행하십시오.
while True:
if [ 'kill -0 $PID_1' -eq 0 ]; then
echo Process still running
else
echo process done
(코드가 제대로 실행되지 않으면 정말 죄송합니다. 침대에서 글을 쓰고 있었습니다 :-))
설명을 위해: 'kill -0 $PID_1'은 0 또는 분명히 1을 반환합니다. 0이면 프로세스가 실행 중이고 1이면 프로세스가 완료됩니다. 'echo $?'로 반환 코드를 확인할 수 있습니다.
이게 도움이 되길 바란다.