파일 간 배치 작업 중단

파일 간 배치 작업 중단

작업을 중지/재개해야 하는 경우 파일 "사이"에 있을 때까지 기다리도록 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] .

참고자료

관련 정보