Как указать количество открытых дескрипторов файлов по процессам для всех процессов в Unix?

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

lsof не похоже, что он может это сделать. Есть ли какая-нибудь другая полезность или что-то, что может это сделать?

2 Solutions collect form web for “Как указать количество открытых дескрипторов файлов по процессам для всех процессов в Unix?”

Я бы сделал что-то вроде:

 sudo lsof -FKc | awk ' function process() { if (pid || tid) { print n, \ tid ? tid " (thread of " pid ": " pname")" : pid, \ name n = tid = 0 } } {value = substr($0, 2)} /^p/ { process() pid = value next } /^K/ { tid = value next } /^c/ { name = value if (!tid) pname = value next } /^f/ {n++} END {process()}' | sort -rn 

Для количества открытых файлов и замените /^f/ на /^f[0-9]/ для числа дескрипторов открытых файлов .

Это будет работать как минимум с Solaris и Linux и, вероятно, с большинством других ОС, поддерживающих файловую систему /proc :

 #!/bin/sh cd /proc echo " count pid" ls -d [1-9]*/fd/* 2>/dev/null | sed 's/\/fd.*$//' | uniq -c | sort -rn 

Используйте -rg вместо -rg в Linux или других операционных системах, используя sort GNU.

  • lsof vs cat / proc / ... / maps
  • Переместить файл, но только если он закрыт
  • Список текущих часов inotify (путь, PID)
  • lsof пропускает файлы
  • Как изменить заголовок команды при запуске сервера?
  • Невозможно повторно установить / вернуться к чтению только после обновления пакета.
  • Не удалось отобразить содержимое каталога: процесс бесконечно бесконечно
  • lsof - отладить выходную информацию
  • Как определить запущенные процессы с помощью пакета библиотеки?
  • Команда lsof слишком длинна для определенного идентификатора процесса
  • количество ссылок удаленных файлов
  • Как я могу выяснить, из каких pty из qemu?
  • Interesting Posts

    Подключение SFTP через другой сервер

    Что такое / proc / filesystems, и почему она отличается от / lib / modules / linux_ver / kernel / fs?

    Найдите строку в файле и переименуйте несколько файлов в результаты

    Почему у меня так много адресов IPV6 для одной сетевой карты

    Можете ли вы записать всю существующую файловую систему на изображение?

    Почему терминалы отображаются в блоках фиксированной ширины

    Несколько конфигурационных файлов для Net-SNMP для упрощения управления MIBS

    таинственный скрипт awk соединяет строки

    Выполнить команду в фоновом режиме, но также объединить в нее другие команды?

    В Vim, как я могу копировать несколько строк? (не диапазон);

    Вызов сценария Bash ожидает сценария с основным SSH-соединением

    Как я могу проверить наличие плохих блоков на физическом томе LVM?

    Имеются ли у bash разные слабые правила цитирования для специальных переменных?

    как рассчитать время (прошедшее время) по петле

    Захват вывода функции оболочки без подоболочки

    Linux и Unix - лучшая ОС в мире.