루프에서 스크립트를 실행하고 중단하는 방법

루프에서 스크립트를 실행하고 중단하는 방법

demo.py"먼저 스크립트를 실행합니다"라는 스크립트 가 있습니다 .

python demo.py -some arguments

잠시 후(120초라고 가정) Ctrl+로 중단 C하고 다시 실행합니다. 이러한 단계를 자동으로 반복하도록 bash 스크립트를 작성할 수 있습니까?

답변1

python demo.py -some arguments &
( sleep 120; kill -TSTP "$!")  & 
fg %1

먼저 background 로 이동한 다음 120초 동안 지속되는 python백그라운드 셸을 시작한 다음 전송 합니다 .sleeppython-TSTP정지시키다신호. 이것은 누르는 것과 엄격히 동일하지는 않습니다.CTRL+C- 원하시겠지만 kill -INT "$!"- 하는 것과 같아서 다시 복원하고 싶을 수도 있을 것 같아요CTRL+Z대신에.

마침내 그것fg 전망작업 ID %1- 테이블에 프로세스가 두 개뿐인 경우 jobs이 ID는 입니다 python.

demo웨이터가 kill그림자 속에 숨어 있는 동안 당신은 달리기 시작합니다.

cat5초 동안 기다립니다 .

cat & ( sleep 5; kill -TSTP "$!" )& fg %1
cat
[1] + Stopped                    cat

루프에서 이 작업을 수행하려면 다음을 수행할 수 있습니다.

(kill -TSTP 0); code=$?
python demo.py -some arguments & pid=$!  
while   (sleep 120;kill -TSTP "$pid")&
        fg %1; [ "$?" = "$code" ]
do :;   done

관련 정보