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リストが提供されます。

関連情報