ps를 사용하여 STAT로 필터링하는 방법은 무엇입니까?

ps를 사용하여 STAT로 필터링하는 방법은 무엇입니까?

STAT 열이 값 X에 해당하는 모든 프로세스를 가져오려고 합니다.

나는 awk를 사용하여 이 작업을 수행했습니다. ps -aux | awk {'if ($8 == "S") print $8" "$11'}

그런데 ps가 아닌 다른 프로그램을 사용하지 않고 이렇게 하고 싶습니다. 어떤 방법이 있나요?

답변1

ps필터링 기능은 제한되어 있지만 ps수많은 옵션이 있는 Linux라도 상태별로 필터링할 수는 없습니다. 따라서 외부 필터링 도구가 필요합니다.

옵션 세트를 단순화할 수 있습니다. 모든 프로세스의 -ax휴대용 디스플레이와 동일합니다 . 대신 awk를 사용하여 열 수를 계산하고 선택할 -e수 있습니다.-o

ps -e -o stat,command | grep '^S '

답변2

아니요, 아마도 방법이 없을 것입니다. ps몇 가지 프로세스 선택 옵션이 있지만 (적어도 내 시스템에는) 상태를 필터링할 수 있는 방법이 없습니다. man ps확인하려면 시스템의 매뉴얼 페이지( )를 확인하세요 .

관심 있는 출력 비트를 찾기 위해 등을 사용한다는 점에 유의하십시오 awk. 이는 Linux/Unix 쉘을 사용하는 데 일반적으로 예상되는 방법입니다. grep이 작업을 자주 수행하고 다시 입력하지 않으려면 .bashrc에 정의된 셸 함수를 사용하거나 유사한 셸 함수를 사용하거나 셸 스크립트를 어딘가 $PATH(보통 )에 넣을 수 있습니다.$HOME/bin

예를 들어, 쉘 함수는 하나의 인수(찾을 상태)를 사용합니다.

ps_for_stat() {
    ps -aux | awk {'if ($8 ==  "'"$1"'") print $8" "$11'}
}

그런 다음 다음을 실행할 수 있습니다.ps_for_stat S

관련 정보