计算每个用户打开的文件数?

计算每个用户打开的文件数?

我正在寻找一个命令,可以列出每个用户打开的文件数,按降序排列。

例如lsof -u postgres | wc -只会为 postgres 用户列出它们,但我确实想看看我可能会在哪个用户上丢失处理程序。

注意:有些问题可能适用于 PID 而不是用户名,但我仍然在寻找一行代码。

答案1

我运行了 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$'

这在 Ubuntu 14.04 上工作正常。最后grep删除了零条目,因为很多用户没有活动进程。您还可以| sort -rnk 2在命令末尾添加以按文件计数降序排序。

您需要处于 root shell 中,以确保您能看到所有用户的文件。

答案2

如果您对管道持开放态度,那么这样怎么样:

lsof | perl -pe 's/\s\s+/ /g' | cut -d' ' -f3 | grep -v ^USER | sort | uniq -c | sort -rn

我在 MacOS 10.10.2(Yosemite)、OEL 6.6 和 Ubuntu 10.04.01 上进行了测试。

相关内容