lsof
lsof (list open files) — выводит открытые файлы и связанные с ними процессы. В UNIX-семантике "файл" включает обычные файлы, каталоги, символические ссылки, FIFO, сокеты (UNIX, IPv4, IPv6), block/char-устройства, anon_inode-объекты (eventfd, signalfd, epoll).
См. lsof(8).
Источники данных
lsof читает /proc/<pid>/fd/, /proc/<pid>/maps, /proc/net/{tcp,tcp6,udp,udp6,unix} и др.; на BSD — kvm/sysctl. Без root видит только файлы, принадлежащие текущему UID.
Колонки вывода:
- COMMAND —
commпроцесса - PID — PID
- TID — TID (с
-K) - USER — владелец процесса
- FD — номер fd или специальная метка:
cwd,rtd(root dir),txt(text/code),mem(mmap),DEL(удалённый mmap), число + режим (r,w,u) - TYPE —
REG,DIR,CHR,BLK,FIFO,unix,IPv4,IPv6,sock,a_inodeи др. - DEVICE — major,minor устройства
- SIZE/OFF — размер или смещение
- NODE — inode, для сокетов — протокол/порт
- NAME — путь или описание endpoint'а
Синтаксис
lsof [опции] [имена]
По умолчанию опции комбинируются по OR. Для AND используйте -a.
Часто используемые опции
Примеры
Кто слушает порт
sudo lsof -nP -iTCP:80 -sTCP:LISTEN
Все соединения процесса
sudo lsof -nP -p 1234 -i
Кто держит файл/сокет
sudo lsof /var/log/syslog
sudo lsof /run/docker.sock
Удалённые, но удерживаемые файлы (deleted but open)
sudo lsof +L1
Кто работает в каталоге
sudo lsof +D /mnt/usb
Отправить SIGTERM держателям файла
sudo kill $(lsof -t /path/to/file)