開いたファイルが多すぎてアプリがクラッシュする問題が発生しました。実行すると、lsof | wc -l
3447067個の開かれたファイル記述子があると表示されますが、何がそれほど多くのファイル記述子を使用しているのかわかりません。
私はcat /etc/passwd
システム内のすべてのユーザーを見つけ、lsof -u <user> | wc -l
そのすべてのユーザーを見つけるために走りましたが、使用された記述子の数に近づくこともできませんでした。
何がそれほど多くのファイル記述子を消費しているかを判断するための合理的な方法はありますか?
答え1
for dir in /proc/[1-9]*/fd; do
echo "$dir"
cd "$dir" &>/dev/null || continue
set -- *
echo $#
echo
done
これが出力ですlsof
。なぜ違うのか分からない。
lsof -F p | sort | uniq -c | sort -n