ユーザーごとに開いているファイルの数を降順に並べ替えるコマンドを探しています。
例えば lsof -u postgres | wc -
はpostgresユーザーに対してのみそれらをリストしますが、どのユーザーでハンドラーを失う可能性があるかを確認したいと思います。
注:ユーザー名ではなくPIDに当てはまる質問もありますが、それでも1つのライナーを探しています。
あなたがパイプにオープンであるならば、これはどうですか:
lsof | Perl -pe's/\ s\s +// g '|カット-d '' -f3 | grep -v ^ USER |並べ替え| uniq -c | sort -rn
これをMacOS10.10.2(Yosemite)、OEL 6.6、Ubuntu10.04.01でテストしました。
Warren Lavalleeのスクリプトを実行しましたが、解釈が難しいことがわかりました。
代わりに、元のスクリプトを拡張して、すべてのユーザーをステップスルーし、次のようにしました。-
for f in $(sed</etc/passwd 's/:.*$//g'); do ( echo -n $f ' '; lsof -u $f 2>/dev/null | wc -l ); done | grep -v ' 0$'
これはUbuntu14.04で正常に機能します。多くのユーザーがアクティブなプロセスを持たないため、最後のgrep
はゼロエントリを削除します。コマンドの最後に| sort -rnk 2
を追加して、ファイル数の降順で並べ替えることもできます。
すべてのユーザーからのファイルを表示できるようにするには、ルートシェルにいる必要があります。