Linux 운영 체제에서 프로세스 테이블에 제한이 있는지 알고 싶습니다. 가득 차있을 수 있나요? 그렇다면 공간을 확보하려면 어떻게 해야 합니까(좀비 프로세스에 대한 항목을 삭제해 볼 수도 있음)?
답변1
실행하면 sysctl kernel.pid_max kernel.threads-max
현재 프로세스와 스레드의 최대 제한을 각각 볼 수 있습니다. (각 프로세스는 최소한 하나의 스레드를 차지합니다. 다중 스레드인 경우 더 많은 스레드를 차지합니다.)
데스크톱 지향 배포판에서 "공장 기본" 프로세스 제한은 32768이거나 기업 지향 배포판에서는 그 이상일 수 있습니다. 최신 64비트 시스템에서는 /etc/sysctl.conf
.
(커널 버전 3.10.25의 최대값은 4194304이며 이후에는 더 증가할 수 있습니다.)
좀비 프로세스는 이미 죽었기 때문에 삭제할 수 없습니다. 당신이 해야 할 일은사악한 좀비 마스터를 죽이고,즉, 좀비 프로세스의 부모 프로세스는 좀비 프로세스가 존재한다는 것은 부모 프로세스가 제대로 작동하지 않는다는 것을 의미하기 때문입니다. 부주의한 상위 프로세스가 종료되면 좀비 프로세스는 프로세스 #1에 의해 채택되어 일반적으로 즉시 정리됩니다.
상위 프로세스는 하위가 사망했다는 알림을 받을 때 항상 하위의 반환 코드를 확인해야 합니다. 또는 시작 시 하위가 소유권을 포기하도록 준비하여 프로세스 #1(보통 /sbin/init
)이 이를 채택할 수 있도록 해야 합니다. 프로세스 #1에는 부모 없는 다른 프로세스를 채택하고 사망 알림을 처리하는 특별한 책임이 있습니다.