좀비 프로세스는 삭제하거나 종료할 수 없습니다.

좀비 프로세스는 삭제하거나 종료할 수 없습니다.

제거를 거부하는 좀비 프로세스가 있는데 killall -9 1913 및 pkill을 시도했지만 효과가 없습니다. 어떤 도움이라도 대단히 감사하겠습니다. Ubuntu 12.04.2 LTS를 실행합니다. 감사해요.

aruna@aruna-desktop:~$ ps -aux | grep Z
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
aruna     1913  0.0  0.0      0     0 ?        Z    12:07   0:00 [lightdm-session] <defunct>

답변1

이 좀비 프로세스의 근본 원인은 설명된 오류인 것 같습니다.여기.

좀비 프로세스를 제거하세요:

SIGKILL 신호를 사용하여 일반 프로세스를 종료할 수 있으므로 좀비 프로세스를 종료할 수 없습니다. 좀비 프로세스는 이미 종료되었습니다. 시스템에 좀비 프로세스가 많지 않은 한 좀비 프로세스를 제거할 필요는 없다는 점을 명심하세요. 일부 좀비 프로세스는 무해합니다. 그러나 좀비 프로세스를 제거하는 방법에는 여러 가지가 있습니다.

한 가지 방법은 SIGCHLD 신호를 상위 프로세스로 보내는 것입니다. 이 신호는 상위 프로세스에게 wait() 시스템 호출을 실행하고 좀비 하위 프로세스를 정리하라고 지시합니다. kill 명령을 사용하여 신호를 보내고 다음 명령의 pid를 상위 프로세스의 PID로 바꿉니다.

kill -s SIGCHLD pid

그러나 상위 프로세스가 올바르게 프로그래밍되지 않았고 SIGCHLD 신호를 무시하는 경우에는 도움이 되지 않습니다. 좀비의 상위 프로세스를 종료하거나 닫아야 합니다. 좀비 프로세스 생성이 끝나면 init는 좀비 프로세스를 상속하고 새로운 부모 프로세스가 됩니다. (init는 Linux에서 부팅 시 시작되는 첫 번째 프로세스이며 PID 1이 할당됩니다.) init는 주기적으로 wait() 시스템 호출을 실행하여 좀비 하위 프로세스를 정리하므로 init가 좀비 프로세스를 신속하게 처리할 수 있습니다. 상위 프로세스를 닫은 후 다시 시작할 수 있습니다.

상위 프로세스가 좀비 프로세스를 계속 생성하는 경우 wait()를 올바르게 호출하여 좀비 하위 프로세스를 얻도록 수정해야 합니다. 시스템의 프로그램이 계속 봇을 생성하는 경우 버그 보고서를 제출하세요.

l옵션을 사용하면 ps상위 프로세스 ID를 찾을 수 ps -l있으며 이는 표시되고 PID하위 프로세스는 표시됩니다.PPID

pstree명령을 사용하여 프로세스 트리를 볼 수도 있습니다 .

답변2

글쎄요, 제가 구글링하기 전에는 "당신은 그렇게 할 수 없습니다"라고 말했을 것입니다.이 계산기 문제. 다음을 사용하여 시스템 호출을 gdb호출 할 수 있는 것 같습니다.waitpid()상위 프로세스좀비 프로세스. 좋은 기술.

내 조언은 이렇게 하지 말라는 것입니다. "lightdm"이 무엇이든 하위 프로세스를 종료한 후 자주 정리할 수도 있고 그렇다고 가정할 수도 있습니다. waitpid()이렇게 하면 물 gdb을 받을 수 있습니다 lightdm.

관련 정보