음수로 프로세스를 종료할 수 없는 이유는 무엇입니까?

음수로 프로세스를 종료할 수 없는 이유는 무엇입니까?

한 번에 하나의 쉘 스크립트 인스턴스만 실행하고 새 인스턴스가 이전 인스턴스를 종료하고 싶습니다.

저는 Linux를 사용하고 있으며 이것이 좋은 접근 방식이라고 생각합니다.

# Terminate other instances by name and name self.
kill -15 $(printf -- '-%s ' $(pgrep mychosenname))
echo mychosenname >| /proc/$$/comm

자식 프로세스도 종료하고 싶기 때문에 PID를 무효화하려면 printf를 참고하세요. 잘 작동하는 것 같습니다. 그러나 어떤 이유로 내 ~/.xprofile(X가 시작될 때)에서 생성된 프로세스에서는 작동하지 않습니다.

ps -a보여주다:

...
  924 tty1     00:00:00 mychosenname?
...

pgrep -a mychosenname보여주다: 924 sh /home/sedwho/projects/mychosenname/run

수동으로 시도해 보면 다음 과 같은 결과를 kill -15 -924얻습니다. kill: kill -924 failed: no such process 그리고 이전과 동일한 출력을 제공합니다.pspgrep

kill -15 924종료하되 하위 프로세스는 종료하지 마세요. :(

답변1

부정적인 프로세스 ID가 아닙니다.

Kill의 두 번째 매개변수로 전달된 음수는 프로세스 그룹 ID(pgid)를 나타냅니다.

귀하의 질문에 대답하려면 해당 번호의 프로세스 그룹 ID가 없기 때문에 프로세스 그룹 ID에 신호를 보낼 수 없습니다.

다음이 유용할 수 있습니다. ps -ao pid,pgid,user,time,command ps -q 924 pgid=

프로세스 그룹 ID는 어떻게 설정되나요?

ps 매뉴얼 페이지

관련 정보