작업을 중지/재개해야 하는 경우 파일 "사이"에 있을 때까지 기다리도록 bash 배치 작업(5.1k 파일을 제자리에 압축)을 설정해야 합니다(하나는 완료하고 다른 것은 시작하지 않음).
pigz -9 -- rsnc*
내 압축은 모두 동시에 실행되는 것처럼 보이며 다음과 같은 것을 고려하고 있었습니다.
ls rsnc* | while read file
do pigz -9 -- $file
if [ -f .intr ]
then break
fi
done
이것이 내 목표를 달성하는 신뢰할 수 있는 수단입니까? 더 좋은 방법이 있나요?
답변1
당신은 trap
[1],[2]Ctrl + 신호 C, INT 신호 및 wait
각 프로세스 종료에 대한 신호입니다.
#!/bin/bash
trap ctrl_c INT
function ctrl_c() {
wait # wait for the end of all child processes
exit # <<--- put here your exit code exit 1, ...
}
shopt -s nullglob
for f in rsnc*
do
pigz -9 -- $file & # Execute in background
wait $! # Wait for the end of the last command
done
메모
디렉토리의 모든 파일을 순환하는 방법에는 여러 가지가 있습니다 .삼] , 하지만 항상 그렇죠출력을 구문 분석하지 않는 것이 좋습니다ls
[4] .
참고자료
- Bash에서 ctrl-c 트래핑, 간단한 예입니다.
- 트랩초보자를 위한 Bash 가이드 - 12장에서.
- 파일에 대한 Bash 루프.
- 더 나은 몇 가지 이유ls 출력을 구문 분석하지 마십시오..