ps 명령: "r" 옵션은 어떻게 작동하나요? 어떻게 사용해야 합니까?

ps 명령: "r" 옵션은 어떻게 작동하나요? 어떻게 사용해야 합니까?

옵션에 대한 ps명령r

man ps그에 따라 보여줘

r      Restrict the selection to only running processes.

그리고 ps --help a이를 토대로 표시

r                   only running processes

tty6명령이 실행 되면 다음과 같습니다 sleep 5000 &.jobs

[1]+ Running sleep 5000 &

기대하고 준수하라달리기용어가 나타납니다. 이는 두 가지 문서 소스 역할을 합니다.

이제 동일한 tty에서 명령을 실행하면 다음과 같은 ps r결과를 얻습니다.

  PID TTY     STAT   TIME COMMAND
 5508 tty6    R+     0:00 ps r

sleep명령이 나타나지 않습니까?

이전에는 다음과 같다고 가정했습니다.백스테이지 과정. yes지금 명령 을 실행하면 y예상대로 영원히 인쇄됩니다.포그라운드 프로세스. tty6차단되었기 때문에명령이 다른 tty(예 tty1: ) 에서 실행되면 다음이 ps -t tty6 r수행됩니다.

  PID TTY      STAT   TIME COMMAND
 5516 tty6     R+     0:21 yes

따라서 지금까지는 r다음에만 적용된다고 가정할 수 있습니다.달리기 전망프로세스.

따라서 이 r옵션은 어떤 스크립트나 명령/도구(예: maven의 목표 또는 gradle의 작업)가 실행되어 오랫동안 계속 실행되는지(특정 tty를 대상으로 함)를 아는 데 유용합니다. 게다가 문서의 두 군데에 나타나기 때문에"프로세스만 실행"문장(관찰 "과정"복수형) 다음 명령 패턴이 고려될 것이라고 가정합니다.

ps -t tty3 -t tty4 -t tty5 -t tty6 r

그러나 위에 표시된 각 tty에 대해 다음 명령을 다음과 같이 실행하면 다음을 깨달았습니다.

cmatrix           # it is a screensaver and remains running
man ls            # it remains opened
ping spring.io    # it remains showing in the terminal each echo message
yes > /dev/null   # it remains running but not showing nothing in the terminal

실행 하면 ps -t tty3 -t tty4 -t tty5 -t tty6 r다음과 같이 표시됩니다.

  PID TTY      STAT   TIME COMMAND
 5598 tty6     R+     0:05 yes

왜 또포그라운드 프로세스고려되지 않았나요?

질문

  • 이 옵션은 어떻게 r작동하나요? - 어떻게 사용해야 하나요?

목적/목표

내 이해에는 다음과 같은 많은 프로세스 유형이 있습니다."달리기, 좀비, 공중부양..."따라서 특정 유형의 보고서를 나열/검색/표시하려면 -"달리기"범주 - 이상적으로는 r옵션을 사용하여 검색해야 합니다.

또한 예를 들어 Maven/Gradle 명령을 실행하여 여러 옵션이 포함된 여러 모듈을 빌드/테스트하는 경우 25분이 소요되며 터미널 창에는 여전히 프로세스 자체에 대한 많은 줄이 표시되므로 시간이 좀 지난 후에도 알아야 합니다. 어떤 명령이 실행되었고(아직 실행 중인지) 어떤 옵션/매개변수가 사용되었는지 - 따라서 r옵션을 사용하는 올바른 방법이라고 가정합니다. 이것이 옵션의 목적입니다 r. 그렇죠?

답변1

r옵션은 실제 실행 중인 프로세스만 표시합니다. 잠은 달리고 있지 않지만 예상대로 잠을 자고 있습니다. 프로그램은 기본적으로 입력을 구문 분석하고 호출을 수행합니다 sleep(). 그게 전부입니다. 포그라운드 프로그램과 수면 프로그램에는 차이가 있습니다. 포그라운드 및 백그라운드 상태는 주로 CPU를 소비하는지 여부가 아니라 셸 내 위치에 관한 것입니다.

대부분의 경우 프로세스는 실제로 그렇게 많이 실행되지 않습니다. top을 실행하고 및 S필드를 보면 %CPU대부분의 프로세스가 S 상태이고 CPU 시간이 약간 사용되는 것을 볼 수 있습니다.

ps r옵션은 상태가 있는 프로세스만 의미할 것으로 예상할 수 있지만 R어떤 이유로 상태 저장 프로세스 D(중단 없이 대기)도 포함됩니다. 적어도 1999년부터 그랬는데, 이유는 모르겠습니다.

이 플래그는 이제 런어웨이 프로세스를 찾는 데 사용될 가능성이 높습니다. 여기 ps r에서 여러 번 실행하면 항상 동일한 프로세스가 나타납니다. 이는 명확한 질문은 아니지만 프로세스가 계속 실행되는 이유를 물어보고 싶을 수도 있습니다.

프로세스를 실행할 때 프로세스의 올바른 상태라는 점을 기억하세요 ( 프로세스 상태를 확인할 ps때 더 정확함 ). 10초마다 실행하고 프로세스가 실행한 순간을 제외하고 9.99초 동안 CPU에 영향을 미치는 ps경우 해당 프로세스는 실행 중인 프로세스가 아닙니다 .pspsps

매 시간마다 창밖을 내다보며 이웃에 방문객이 있는지 확인하는 것과 같습니다. 누군가를 잡을 수도 있지만 가능성은 희박합니다.

거의 항상 실행을 원하지 않고 ps실행 상태를 선택합니다. CPU의 대부분을 차지하는 것이 무엇인지 알고 싶다면 top유휴 상태를 켜면(i를 누르면) 필요한 것이 무엇인지 알 수 있습니다. 이 유형의 선택은 "마지막 새로 고침 이후 CPU 사용량 데이터가 변경되었습니까?"라고 묻습니다.

관련 정보