Как получить количество каждого открытого файла в системе (поддерживается losf)

sudo lsof | awk '{printf("%s %s %s\n", $1, $3, $NF)}' | grep -v "(" | sort -k 4 | gawk '$NF==prv{ct++;next} {printf("%d %s\n",ct,$0);ct=1;prv=$NF}' | uniq | sort -nr


Эта команда выполняет следующие действия:
1. sudo lsof: Выводит список открытых файлов и процессов с помощью lsof.
2. awk '{printf("%s %s %s\n", $1, $3, $NF)}': Форматирует вывод, оставляя только информацию о процессе, владельце и именах файлов.
3. grep -v "(": Удаляет строки, содержащие символ «(» (обычно это файлы, к которым нет доступа).
4. sort -k 4: Сортирует вывод по четвёртому столбцу, который представляет имена файлов.
5. gawk '$NF==prv{ct++;next} {printf("%d %s\n",ct,$0);ct=1;prv=$NF}': Группирует файлы и подсчитывает их количество.
6. uniq: Удаляет дублирующиеся строки.
7. sort -nr: Сортирует результат в обратном порядке по количеству открытых файлов.

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

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *