Утилиту lsof (list open files) чаще всего используют для просмотра открытых файлов в Linux - и на этом, как правило, всё. Но возможности этой команды куда шире. Давайте разберёмся.
🔎 Основная задача: поиск открытых, но удалённых файлов
Это частый кейс: удалили лог-файл (/var/log/nginx/access.log), не перезапустили сервис - и место продолжает быть занятым.
lsof | grep '(deleted)'
# или так, короче:
lsof +L1
💎 Полезные команды по категориям
📍 Открытые файлы в каталоге:
lsof +D /var/log
📍 Открытые файлы от пользователя:
lsof -u user
# Посчитать, сколько файлов открыто:
lsof -u user | wc -l
# Исключить пользователя:
lsof -u^user | wc -l
📍 Завершить все процессы пользователя, открывшие файлы:
kill -9 $(lsof -t -u user)
📍 Файлы, открытые конкретным PID:
lsof -p 12345
💩 Сетевой режим - неочевидный, но мощный
📍 Список всех сетевых соединений (TCP и UDP):
lsof -ni
📍 Кто слушает порт 80:
lsof -ni TCP:80
📍 TCP соединения к конкретному IP:
lsof -ni TCP@192.168.1.10
📍 Сетевые соединения конкретного пользователя:
lsof -ai -u nginx
📍 UDP соединения:
lsof -iUDP
lsof - это инструмент не только для отладки “куда делось место”, но и для быстрого анализа сетевых соединений, отлова "висячих" файлов и поиска активных пользователей.
#linux #lsof
🧑💻 NetworkAdmin