데몬으로 강력한 상위/하위 프로세스를 식별하는 방법이 있습니까? 다음 예를 고려하십시오.
- PID 123이 PID 124로 분기됨
- PID 124는 setid를 호출합니다.
- PID 124가 PID 125로 분기됨
- PID 124 종료
- PID 123 PID 124를 기다립니다.
이제 PID 125가 PID 123의 자손인지 어떻게 확인할 수 있습니까? 분명히 상위 PID는 작동하지 않습니다(상위 프로세스는 PID 124로 종료되었으므로 1이 됩니다). SID도 작동하지 않습니다(124가 되며 종료되고 수집되었으므로 정보를 사용할 수 없습니다).
답변1
숫자 ID 필드만으로는 불가능합니다. Linux에서는 제어 그룹(cgroup)이 계층적이며 프로세스가 해당 cgroup을 떠날 수 없기 때문에 이 문제를 해결하기 위해 사용할 수 있습니다.
이것이 바로 프로세스 트리를 추적하기 위해 cgroup을 사용하는 systemd와 달리 기존 init 시스템에는 특정 서비스에 의해 시작된 프로세스를 확인할 수 있는 신뢰할 수 있는 방법이 없고 따라서 해당 프로세스를 종료할 수 있는 신뢰할 수 있는 방법도 없는 이유입니다.