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
, для достижения похожих результатов.