ps -ef가 중단되는 이유를 디버깅하는 데 필요한 조언

ps -ef가 중단되는 이유를 디버깅하는 데 필요한 조언

내 프로세스 중 일부는 CPU를 100% 소비합니다. 어떤 스크립트가 문제를 일으키는지 알아내려고 합니다.

나는 다음을 실행하려고합니다 strace ps -ef:

open("/proc/PID/status", O_RDONLY) = 6
read(6, "Name:\textract\nState:\tR (running)"..., 1023) = 1023
close(6) = 0
open("/proc/PID/cmdline", O_RDONLY) = 6
read(6,

그래서 읽으려고 할 때 멈추게 됩니다 /proc/PID/cmdline. 시도해봤는데 cat또 멈췄어요. 뭔가 커널에 문제가 있는 것 같습니다. 다음에 무엇을 시도해야 합니까?

참고: 다시 시작해도 작동하지 않습니다. 수동으로 종료하면 문제가 다시 나타납니다. SUSE Linux Enterprise Server 11(x86_64), Linux 2.6.27.19를 사용하고 있습니다.


편집하다: ps -e출력을 생성하는데 s 가 너무 많습니다 grep. s의 수는 grep250, 450으로 다양합니다. 이제 약 520개의 grep이 표시됩니다. 나는 조금 역추적하여 이것이 cron 스크립트의 결과라는 것을 알았습니다. 여전히 크론 스크립트를 이해해야 합니다. 예, top결과를 표시합니다. 이틀 전에 서버를 수동으로 종료했습니다. 지난 이틀 동안 시스템이 가동되었습니다. 나는 항상 오라클이 실행되는 것을 봅니다. 방금 메모리 테스트를 했는데 오류가 발견되지 않았습니다.

답변1

바로 어제요. 문제는 한 프로세스가 상태로 표시되는 "논스톱 절전" 상태에 있다는 것입니다.상단에. ls /proc/는 반환되지 않으며 중단할 수 없습니다. ps -ef는 반환되지 않으며 중단할 수 없습니다.

재부팅해도 도움이 되지 않으면 DVD나 하드 드라이브에 불량 섹터가 있고 프로세스 PID가 시작 중에 이를 읽으려고 시도하는 것일 수 있습니다. 따라서 기술적으로 재부팅하면 도움이 되지만 오류가 자동으로 다시 발생합니다.

프로세스가 실제로 D 상태에 있는지 확인하고 거기서부터 계속하세요. 이 프로세스(복구 시스템)를 호출하지 않고 컴퓨터를 시작하십시오. 그런 다음 프로그램을 실행하여 추적하고 어떤 파일에 액세스했는지 확인하세요. 파일 중 하나에 불량 섹터가 있는 것 같습니다.

답변2

grep이 중단된 것처럼 보이고 cron 작업 예약으로 인해 특정 시간(crontab에 작성된 대로) 후에 다른 프로세스가 활성화됩니다. 여러 프로세스로 인해 시스템이 응답하지 않을 수 있음

다음 디버깅 방법을 시도해 보세요.

  • crontab 항목을 변경하여 스크립트 간격을 늘립니다(정지된 스크립트가 여러 번 실행되지 않도록).
  • 일정 기간 동안 top의 출력을 기록합니다.
  • 최상위 로그부터 시작하여 프로세스 트리를 탐색하고 중단된 프로세스를 찾습니다.
  • 그런 다음 동일한 것을 호출하는 코드 형식을 반복합니다.

관련 정보