linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Команды/cmd-lsof

kb/commands ── Команды ── intermediate

lsof - кто что открыл

`lsof` (List Open Files) показывает все открытые файлы по всем процессам. В Linux всё - файл, поэтому это и обычные файлы, и сокеты, и pipe'ы.

view as markdownaka: list-open-files

Зачем

Когда нужно ответить на вопросы:

  • «Какой процесс держит этот порт?»
  • «Кто захватил этот файл и не отпускает?»
  • «Почему диск full если du показывает мало?»

lsof - главный ответчик. Без sudo показывает только твои процессы; с sudo - все.

Самые ходовые формы

bash
lsof -p 1234              # все fd конкретного [[process-and-pid]]
lsof -i                    # все сетевые сокеты
lsof -i :8080              # кто слушает или связан с портом 8080
lsof -i tcp                # только TCP
lsof -nP -i                # без resolv: -n не резолвить хосты, -P не резолвить порты
lsof /var/log/app.log      # кто открыл этот конкретный файл
lsof +D /var/lib/docker    # все открытые внутри директории (-D = recurse)

Самый полезный one-liner: lsof | grep deleted

Когда df -h показывает full, а du -sh / - нет:

bash
sudo lsof | grep deleted

Это процессы которые держат открытым файл, удалённый из ФС. Inode жив пока fd не закроется. Самый частый виновник - приложение с ротацией логов которое забыло переоткрыть лог-файл.

Колонки в выводе

COMMAND  PID  USER  FD   TYPE  DEVICE  SIZE/OFF  NODE  NAME
nginx    900  www   6u   IPv4  12345   0t0      TCP    *:80 (LISTEN)
  • FD: число + тип. 6u - fd 6, открыт на read+write. cwd, rtd, txt, mem - спецтипы (cwd = текущая директория, txt = бинарь, mem = mmap)
  • TYPE: REG (файл), DIR, CHR (char device), IPv4/IPv6, unix, FIFO
  • NAME: путь либо host:port → host:port для сокетов

Альтернатива через /proc

Без lsof то же видно через /proc/<pid>/fd/*:

bash
ls -l /proc/900/fd/        # каждый fd - symlink на цель

lsof это просто удобный агрегатор того же.

§ команды

bash
lsof -p $(pgrep -x nginx)

Все открытые файлы конкретного процесса

bash
sudo lsof -i :8080

Кто слушает или подключён к порту 8080

bash
sudo lsof | grep deleted

Удалённые-но-открытые файлы - кандидаты на «диск загадочно full»

bash
lsof -nP -i tcp

Все TCP-соединения системы без резолва имён

bash
lsof -t -i :8080 | xargs -r kill

Прибить все процессы держащие порт 8080 (-t = только PID)

§ см. также

  • cmd-psps - снимок процессовps - снимок процессов в момент вызова. Два диалекта: BSD (`aux`, без дефиса) и UNIX (`-ef`, с дефисом). `-o` задаёт колонки. Для непрерывного просмотра - [[cmd-htop|htop]].
  • cmd-htophtop - интерактивный монитор процессовhtop - интерактивный TUI-монитор процессов. F-keys: F3 поиск, F4 фильтр, F5 дерево, F6 сортировка, F9 kill. Цветовые столбцы наверху, список внизу. Замена top'а везде, где доступен.
  • cmd-stracestrace - какие syscall'ы делает процесс`strace` показывает в реальном времени какие системные вызовы делает процесс и с какими аргументами. Главный инструмент когда «процесс молчит».
  • cmd-lsblk-blkidlsblk и blkid - block-устройства и UUIDlsblk показывает дерево block-устройств (диск → раздел → LVM/crypt → mountpoint). blkid печатает UUID/LABEL/TYPE ФС. Связка для написания строки в [[mount-and-fstab|/etc/fstab]] по UUID.
  • file-descriptorsFile descriptors (stdin, stdout, stderr)File descriptor - целое число, через которое процесс обращается к открытому файлу/сокету/pipe. У каждого процесса 0/1/2 = stdin/stdout/stderr.
  • cmd-ssss - кто слушает и кто подключён`ss` - современная замена netstat. Показывает сокеты: LISTEN, ESTABLISHED, поддерживает фильтры по адресу/порту/state и extended TCP info.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки