특정 사용자의 휴면 프로세스 수 계산

특정 사용자의 휴면 프로세스 수 계산

특정 사용자가 시작한 비잠자기 프로세스 수를 계산하고 싶습니다. 나는 수면 과정이 상태 변수에 "S" 또는 "D"를 갖는 과정이라는 것을 알고 있습니다 ps. 또한 변수가 포함된 목록에서 다음 userstate같은 방법으로 프로세스를 계산할 수 있다는 것도 알고 있습니다.

ps -e -o user,state | grep -c 'username'

마찬가지로, 나는 다음과 같은 방법으로 수면 과정을 계산할 수 있다는 것을 알고 있습니다.

ps -e -o user,state | grep -c 'S|D'

그러나 두 정보를 모두 사용하여 사용자가 시작한 비잠자기 프로세스를 계산하는 방법을 알 수 없습니다 username.

답변1

명령 출력에서

ps -e -o user,state

상태는 각 줄의 마지막 문자입니다. 따라서 우리는 기본적으로 주어진 사용자 이름을 포함하고 an S또는 a로 끝나지 않는 줄을 계산합니다 D.

ps -e -o user,state | grep -c -E 'pduck.*[^SD]$'

그러면 단어(내 사용자 이름)가 포함 되고 또는 pduck 로 끝나지 않는 모든 줄을 찾거나 계산합니다 .SD

-E필요하므로 grep정규식을 이해합니다.

@스틸드라이버댓글에서 제안한"사용자를 선택하고 -u pduck출력 필드 목록에서 모두 생략합니다.". 동의합니다. 이것이 훨씬 더 좋지만 스위치를 삭제해야 합니다. -e그렇게 하면 모든 프로세스(사용자의 프로세스뿐만 아니라 pduck)가 선택되기 때문입니다.

ps -u pduck -o state | grep -c -E '[^SD]$'

관련 정보