ps 출력의 Wchan 섹션에 아무것도 표시되지 않음

ps 출력의 Wchan 섹션에 아무것도 표시되지 않음

프로세스가 상태에 들어가면 D중단할 수 없는 상태라는 것을 알고 있습니다. 어떤 신호로도 프로세스를 종료할 수 없습니다. 재부팅 시 또는 I/O 대기가 끝난 경우에만 해당 상태가 해제됩니다.

D내 컴퓨터에 문제가 있음을 보여주는 상태 의 프로세스가 많이 있습니다 . 또한 재부팅 후에도 상태로 돌아갑니다 D. 온라인으로 검색한 결과 wchanps 출력의 해당 섹션이 내 프로세스가 커널에서 무엇을 기다리고 있는지 알려줍니다.

이 명령을 사용할 때 wchan 열에 ps axl| grep D들어가고 있는데 -이것이 무엇을 의미하는지 온라인에는 설명이 없습니다.

이것은 위 명령에 대한 샘플 출력입니다.

0     0  69970      1  20   0  25064  1088 -      D    ?          0:00 ls -l

-위 출력의 의미 를 이해할 수 없습니다 .

답변1

-wchan이 다음과 같이 보고되는 데에는 몇 가지 이유가 있을 수 있습니다 ps.

  • 프로세스가 커널에서 차단되지 않았습니다. 즉, 실행 중입니다(ps state열 참조).
  • 그만큼스택워킹 절차일부 코너 케이스 또는 경쟁 조건으로 인해 실패합니다. 예를 들어 적절한 프레임 포인터 설정이 필요하지만 설정 없이 컴파일된 커널에서는 무조건 실패할 수도 있습니다. cat /proc/*/wchan- 모든 0 출력이 wchan 지원이 중단되었음을 나타냅니다(예: 현재의 경우).페도라 31 및 32)
  • 가지고 있지 않다필요한ptrace 액세스 모드 권한(즉 PTRACE_MODE_READ_FSCREDS) - 가능성 없음
  • 그만큼기호 조회가 실패합니다.커널에서 - 가능성 없음

최신 버전에서는 더 쉬운 테스트를 위해 직접 액세스할 수 있는 pswchan 정보 도 읽을 수 있습니다. wchan 정보 검색이 실패하면 해당 파일을 읽습니다 . 이는 ./proc/$pid/wchancat0ps-

손상된 시스템에서 wchan대체 방법은 다음을 살펴보는 것입니다(루트 필요).

cat /proc/$pid/stack

또는 다음과 같이 문의하십시오(루트 권한이 필요하지 않음).

cat /proc/$pid/syscall

답변2

최신 Linux 커널에서는 프로세스가 어떤 커널 기능에 멈췄는지 확인할 수 있습니다.

cat /proc/<pid_numer>/stack

답변3

ps의 매뉴얼 페이지에는 이 정보가 있습니다. "-"는 프로세스가 실행 중임을 의미합니다. 프로세스가 휴면 중인 커널 함수의 WCHAN 이름, 프로세스가 실행 중이면 "-", 프로세스가 다중 스레드이고 ps가 스레드를 표시하지 않는 경우 "*"입니다.

관련 정보