pgrep에서 반환된 프로세스 ID를 직접 종료한 다음 잠금 파일을 삭제하여 모노 서비스 RecorderManager.exe 프로세스를 완전히 종료한다는 목표로 다음 클릭 Ubuntu 16.04 bash 스크립트를 작성하고 테스트했습니다.
#!/bin/bash
PID=$(exec pgrep -lx "Recorder Manage")
echo $PID
NUMBER=$(echo $PID | tr -dc '0-9')
echo $NUMBER
kill -9 $NUMBER
rm /tmp/My_Recorder.exe.lock
많은 테스트 후에 저는 이 bash 스크립트의 동작이 무작위로 번갈아 나타나는 것을 발견했습니다. 때로는 "Killed!"를 출력하고 때로는 "10931 My_Recorder.exe" 다음에 10931을 출력합니다.
이런 무작위 동작이 발생하는 이유는 무엇이며 어떻게 해결할 수 있나요?
답변1
스크립트 자체의 이름은 무엇입니까? 패턴과 일치하나요 Recorder Manage
? 그렇다면 pgrep
찾고 있는 프로세스 외에 스크립트 자체도 찾아야 합니다. 그러면 먼저 나열할 효과적인 문제가 될 것입니다.
kill -9
또한 반드시 필요한 경우가 아니면 사용하지 마십시오. 대신 kill
send 를 사용하면 자체 PID 파일을 포함하여 종료된 프로세스가 자체적으로 정리됩니다.SIGTERM
SIGKILL