我々は、サーキットブレーカを使用して特定のポートに関連するログを見つけます。
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リストが提供されます。