[server] kill -9에 응답하지 않는 프로세스를 종료하는 방법

SLES 10.1을 실행하는 SGI Altix 450의 프로세스가 실행을 중지 한 것 같습니다 (즉, 몇 시간 동안 로그에 추가 출력을 제공하지 않음). 이 시점에서 문제가있는 프로세스를 종료하고 다시 시작할 수 있습니다. 상단은 프로세스가 (R) 상태임을 나타냅니다. 내가 죽이려고해도 아무 일도 일어나지 않습니다. kill -9를 사용해도 여전히 남아 있습니다. 이 경우 컴퓨터를 다시 시작하는 것 외에 무엇을 할 수 있습니까?



답변

프로세스가 종료되었지만 부모가 반환 값을 수집하기를 기다리는 중일 수 있습니다. 이 경우 종료 된 후 ‘R’이 아닌 ‘Z’상태에있게됩니다. 이 경우 명령을 ppid사용하여 프로세스를 찾고 ps상위 프로세스도 종료해야합니다 (실제로 문제가 발생하지 않는 경우).

다른 경우는 어떤 이유로 프로세스가 tty와 같이 종료 된 후 다시 시작되는 것일 수 있습니다. 이 경우 프로세스 ID는 kill -9를 수행 할 때마다 변경되어야합니다. 프로세스 ID를 종료하려고 할 때마다 프로세스 ID가 변경되는지 확인하십시오.


답변

프로세스가 NFS 같은 시스템 리소스를 기다리고 있습니까? 그것은 ‘가자’는 것을 허용하지 않습니다. 내 것을 넘어서 이것에 대한 해결책을 듣고 싶습니다 …

상자를 재부팅하거나 프로세스를 그대로 두십시오.

kill -STOP {PID}를 통해 프로세스를 ‘중지’하여 더 많은 CPU를 사용하지 못하게 할 수 있을지 궁금합니다.

다시 시작하면 프로세스가 중지 된 다른 상태에서도 가능해야하지만 다른 프로세스에서 여전히 사용중인 목록 포트 또는 공유 메모리 세그먼트가 필요할 수 있습니다.


답변

아직 dmesg를 확인 했습니까? 나는 커널 패닉 후에 이것을 보았다; 복구 할 수있는 유일한 방법은 재부팅 (바람직하게는 빨리)하는 것입니다. 패치 된 커널을 얻는 것입니다.

일반적으로 처리 할 수없는 프로세스는 R이 아닌 D 상태입니다.


답변