특정 프로세스 종료 후 시스템을 종료하는 방법

특정 프로세스 종료 후 시스템을 종료하는 방법

pid일부 소프트웨어를 다운로드하고 있습니다. 다운로드 프로세스를 볼 수 있습니다 top. 이라고 가정합니다 1001.

1001프로세스가 종료된 후 컴퓨터를 종료 하려면 어떻게 해야 합니까 ?

답변1

이 단일 라인 루프는 프로세스 ID 1001에 대한 ps 출력을 확인하고 2초 동안 휴면 상태를 유지한 다음 찾을 수 없을 때까지(프로세스가 종료됨) 다시 확인합니다. 이 시점에서 루프는 종료되고 종료되는 다음 명령을 계속합니다.

while [[ $(ps 1001 &> /dev/null)$? -eq 0 ]]; do sleep 2 ;done && shutdown -h now

프로세스 1001이 자신이 생각하는 프로세스인지 확인하려면 grep을 추가하여 테스트할 수 있습니다. 예를 들어 프로세스가 iTunes여야 하는 경우 다음을 수행할 수 있습니다.

while [[ $(ps 1001 |grep -q "iTunes" &> /dev/null)$? -eq 0 ]]; do sleep 2 ;done && shutdown -h now

답변2

여기요. 테스트를 거쳐 작동 중입니다.

while [ 1 ] ; do 
   ps 1001 > /dev/null || { shutdown -h now ; break ; }
   sleep 1
done

답변3

다음 명령을 실행하십시오.

while kill -0 1001 &> /dev/null; 
do
   sleep .1
done;
poweroff

를 사용하면 kill -0실제 신호를 보내지 않지만 주어진 프로세스가 실행되는 동안 true를 보고합니다. 오류 또는 성공 메시지가 프로그램 출력에 포함되지 않도록 (bitbucket) &>으로 리디렉션합니다 . /dev/null이는 10분의 1초 동안 휴면 상태가 되며 더 이상 실행되지 않을 때까지 프로세스를 확인한 다음 를 실행합니다 poweroff.

관련 정보