Подсчитывать количество открытых файлов для каждого пользователя?

Я ищу команду, которая перечисляла бы мне количество открытых файлов для каждого пользователя, отсортированных по убыванию.

Например lsof -u postgres | wc - перечислил бы их только для пользователя postgres, но я хочу увидеть, на каком пользователе я могу потерять обработчики.

Примечание: некоторые вопросы могут относиться к PID вместо имен пользователей, но все же я ищу один вкладыш.

2 ответа

Я запустил сценарий Уоррена Лавалли, и мне было трудно его интерпретировать.

Вместо этого я расширил исходный скрипт, чтобы пройти через всех пользователей, чтобы дать следующее:

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 до конца команды для сортировки в порядке убывания количества файлов.

Вы должны быть в корневой оболочке, чтобы убедиться, что вы можете видеть файлы от всех пользователей.

Если вы открыты для трубы, как насчет этого:

лсоф | perl -pe 's/\s\s+/ /g' | cut -d' ' -f3 | grep -v ^ ПОЛЬЗОВАТЕЛЬ | сортировать | uniq -c | сортировать

Я проверил это на MacOS 10.10.2 (Yosemite), OEL 6.6 и Ubuntu 10.04.01.

Другие вопросы по тегам