← Back to notes

lsof


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.

Колонки вывода:

  • COMMANDcomm процесса
  • PID — PID
  • TID — TID (с -K)
  • USER — владелец процесса
  • FD — номер fd или специальная метка: cwd, rtd (root dir), txt (text/code), mem (mmap), DEL (удалённый mmap), число + режим (r, w, u)
  • TYPEREG, 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)

Ссылки

lsof | Aleksandr Suprun