Подсчитывать количество открытых файлов для каждого пользователя?
Я ищу команду, которая перечисляла бы мне количество открытых файлов для каждого пользователя, отсортированных по убыванию.
Например 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.