Linux에서 응답하지 않는 응용 프로그램을 찾는 방법

Linux에서 응답하지 않는 응용 프로그램을 찾는 방법

Windows(Powershell)에서 Linux(Shell Script)로 모니터링 스크립트를 마이그레이션하고 싶습니다. Windows에서 확인하는 한 가지는 응용 프로그램이 "응답하지 않는" 경우입니다. (예를 들어 작업 관리자를 열면 "실행 중" 또는 "응답 없음"이라고 표시됩니다)

Linux에도 이에 상응하는 것이 있나요? 그렇다면 어떻게 찾을 수 있나요? 온라인으로 검색했지만 찾는 방법을 설명하는 내용을 찾을 수 없으며 앱이 응답하지 않는 경우 수행할 작업만 찾을 수 있습니다.

답변1

Linux에서는 프로세스가 다양한 상태에 있을 수 있습니다.

  1. 실행 중(R): 프로세스가 실행 중이거나 실행할 준비가 된 상태입니다.
  2. 인터럽트 가능(S): 이 상태는 프로세스가 차단된 상태로, 다른 프로세스의 이벤트나 신호를 기다리고 있습니다.
  3. Uninterruptible(D): 차단 상태이기도 합니다. 하드웨어 상태를 기다리고 있고 신호를 처리할 수 없는 특정 조건에서는 프로세스가 강제로 중지됩니다.
  4. 중지됨(T): 프로세스가 완료되면 이 상태가 발생합니다. 프로세스를 다시 시작할 수 있습니다.
  5. Zombie(Z): 이 상태에서는 프로세스가 종료되지만 프로세스 테이블의 정보는 계속 사용할 수 있습니다.

"ps" 명령과 "grep"을 실행하여 상태를 확인할 수 있습니다. 예를 들어:

ps aux | awk '{if ($8 ="D") print}'

답변2

참고하실 수 있도록 다음 링크를 찾았습니다. 이는 매우 유용하고 정확합니다. Linux 매뉴얼에 제공됨공정(5).

state  %c
                    One of the following characters, indicating process
                    state:

                    R  Running

                    S  Sleeping in an interruptible wait

                    D  Waiting in uninterruptible disk sleep

                    Z  Zombie

                    T  Stopped (on a signal) or (before Linux 2.6.33)
                       trace stopped

                    t  Tracing stop (Linux 2.6.33 onward)

                    W  Paging (only before Linux 2.6.0)

                    X  Dead (from Linux 2.6.0 onward)

                    x  Dead (Linux 2.6.33 to 3.13 only)

                    K  Wakekill (Linux 2.6.33 to 3.13 only)

                    W  Waking (Linux 2.6.33 to 3.13 only)

                    P  Parked (Linux 3.9 to 3.13 only)

관련 정보