Fuser를 사용하여 실행 중인 프로세스 수 확인

Fuser를 사용하여 실행 중인 프로세스 수 확인

우리는 회로 차단기를 사용하여 특정 포트와 관련된 로그를 찾습니다.

fuser /test/log*

그러면 포트와 관련된 로그 목록이 생성됩니다.

출력 라인 수를 찾는 방법은 무엇입니까?

나는 노력했지만 |wc - l운이 없었다.

답변1

$ fuser /usr/bin/zsh
/usr/bin/zsh:         4771e  4778e  7305e  9848e 12416e
$ fuser /usr/bin/zsh > /dev/null
/usr/bin/zsh:       eeeee
$ fuser /usr/bin/zsh 2> /dev/null
  4771  4778  7305  9848 12416

보시 fuser다시피 출력은 stdout과 stderr로 분할됩니다. 여기서 stdout에는 pid가 있고 stderr에는 장식(및 오류가 있는 경우)이 있으므로 pid 수를 찾으려면 stderr을 버리고 다음 명령을 사용하여 표준 출력의 단어 수:

n=$(fuser /test/log* 2> /dev/null | wc -w)

수량을 찾으려면고유한pids(일부 프로세스에 여러 파일이 열려 있는 경우 /test/log*), zsh에서는 다음을 수행할 수 있습니다.

n=${#${(u)$(fuser /test/log/* 2> /dev/null)}}

(이것은 또한 종료 상태 보존을 용이하게 합니다 fuser).

또는 lsof대신 사용하십시오 fuser:

n=$(lsof -t /test/log/* | wc -l)

-t그 중 lsof중복되지 않은 각 라인의 pid 목록이 제공됩니다.

관련 정보