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
.