我遇到一个问题,我的应用程序崩溃,说打开的文件太多。运行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