프로세스 추상화에 사용 가능한 신호를 사용하여 프로세스를 제어하는 데 문제가 있습니다. 아래 예에서는 perl
전체 트리의 상위 스크립트 가 있고 해당 값 group i.d.
은 25235
. 이것은 GID
모든 아이들이 물려받는 것입니다. 그러나 자식 중 하나인 PID
of 가 있는 쉘은 4205
새로운 GID
쉘을 시작합니다 4205
.
프로세스 트리의 이 분기에 대해 새 그룹 ID를 설정한 이유는 때때로 프로세스 트리의 나머지 부분에 영향을 주지 않고 kill -9 -4205
동일한 그룹 ID를 공유하면서 sh 프로세스와 모든 하위 프로세스를 종료하고 싶기 때문입니다 . GID
그런 다음 셸 프로세스와 해당 하위 프로세스를 다시 시작할 수 있습니다. 내가 가진 문제는 perl
스크립트(부모)에서 시작하여 전체 트리를 종료해야 할 때입니다 . kill -9 -25235
(main group i.d.
) 또는 kill -9 4678
(부모 PID
)를 실행하면 다른 그룹 ID를 가진 분기를 제외하고 전체 트리가 종료됩니다. 이러한 프로세스는 init로 다시 부모화됩니다.
다른 나무에 관계없이 전체 나무를 죽이는 방법이 있습니까 GIDs
? 아마 올지도 모른다고 생각 session ids
하지만, 과연 올지는 알 수 없습니다.
프로세스 트리 예:
perl(4678,25235)─┬─sc_serv(4685,25235)─┬─{sc_serv}(4691,25235)
│ ├─{sc_serv}(4693,25235)
│ └─{sc_serv}(4694,25235)
└─sh(4205,4205)─┬─ffmpeg(4207,4205)
└─vlc(4208,4205)─┬─{vlc}(4217,4205)
├─{vlc}(4219,4205)
└─{vlc}(4296,4205)