우리는 회로 차단기를 사용하여 특정 포트와 관련된 로그를 찾습니다.
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 목록이 제공됩니다.