주어진 사용자가 시작한 비 휴면 프로세스 수를 계산하고 싶습니다. 수면 프로세스는 ps
상태 변수 에 "S"또는 "D"가있는 프로세스라는 것을 알고 있습니다 . 나는 또한 변수가 포함 된 목록에서 프로세스 믿을 수있는 알 user
과 state
로를 :
ps -e -o user,state | grep -c 'username'
마찬가지로 다음과 같이 수면 프로세스를 계산할 수 있습니다.
ps -e -o user,state | grep -c 'S|D'
그러나 두 정보를 사용하여 사용자가 시작한 비 휴면 프로세스를 계산하는 방법을 알 수 없습니다 username
.
명령의 출력에서
ps -e -o user,state
상태는 각 줄의 마지막 문자입니다. 그래서 우리는 기본적으로 주어진 사용자 이름을 포함하는 줄을 계산하고 다음으로 끝나지 S
않습니다 D
.
ps -e -o user,state | grep -c -E 'pduck.*[^SD]$'
이것은 pduck
(내 사용자 이름) 이라는 단어를 포함하고 S
또는로 끝나지 않는 모든 줄을 찾거나 계산합니다 D
.
이것은 -E
필수이므로 grep
정규 표현식을 이해합니다.
@steeldriver 는 "사용자를 선택하고 -u pduck
출력 필드 목록에서 모두 생략 " 하라는 주석에서 제안했습니다 . 동의합니다. 이것이 더 낫습니다.하지만 그러면 -e
모든 프로세스가 선택되기 때문에 스위치 를 삭제해야 합니다 (user의 프로세스뿐만 아니라 pduck
).
ps -u pduck -o state | grep -c -E '[^SD]$'
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다