pkill 자체 종료(및 상위 프로세스)가 지속됩니까?

pkill 자체 종료(및 상위 프로세스)가 지속됩니까?

나는 몇 가지 기준에 따라 선택된 여러 프로세스를 종료한 다음 종료하는 bash 스크립트를 작성하고 있습니다. 유일한 문제는 이러한 기준이 스크립트와 해당 상위 프로세스( bash, sshd) 자체에 적용되므로 작업이 완료되기 전에 스크립트가 종료되는 것을 방지하기 위해 먼저 일치하는 프로세스를 가져온 ps다음 스크립트와 해당 상위 프로세스를 필터링 sed하고 마지막으로 Kill the 나머지 프로세스를 사용하여 종료합니다 kill.

이제 이것이 단일 호출로 줄어들 수 있는지 궁금합니다 pkill. 그러나 분명히 그것은 pkill자신과 상위 프로세스를 종료하는 것이 보장된 경우에만 작동합니다.마지막종료할 프로세스 목록에 나타나는 경우.

그러한 보증이 구현되어 있습니까 pkill?

답변1

pkillpgrep신경이 스스로 그러는 것처럼 결코 자살하지 마십시오 pkill.출구모든 적격 프로세스(자신 제외)를 종료한 후. pkill자격이 있으면 부모를 죽이지만 부모가 셸인 경우 무시할 수 없는 신호(보통 -9, 즉 -[SIG]KILL)를 사용하지 않는 한 셸은 일반적으로 이를 무시합니다. 가 포함되어 있으면 sshd세션은 물론 쉘 및 (대부분?) 다른 프로세스도 종료되는데 이는 일반적으로 바람직하지 않습니다.

pgrep당신은 사용 하고 싶을 수도 있습니다찾다또는 를 사용하여 프로세스를 실행 -l하고 -lf실행하기 전에 추가 검사를 수행합니다.kill

답변2

pkill -fprocps-ng에서 pkill을 사용하면 자신의 명령줄을 일치시켜 자살할 수 있는 것처럼 보이지만 pkillmacOS의 BSD는 이를 수행하지 않는 것 같습니다.(나는 "procps-ng 3.3.17에서 pkill"을 테스트했습니다)

바라보다linux - pkill을 사용하여 프로세스가 스스로 종료되는 것을 방지합니다.이러한 상황을 방지하기 위한 옵션에 대해 알아보세요.

관련 정보