Глосарій/Коли щось іде не так

lsof

Також: список відкритих файлів

Коротка відповідь

lsof — команда Термінала, яка показує файли, папки й мережеві підключення, відкриті кожним процесом. На Mac вона відповідає, який процес використовує файл, що не дає вилучити диск і що прослуховує порт.

lsof означає list open files («список відкритих файлів»), і ця команда є в macOS. Запущена без нічого після неї, вона виводить тисячі рядків, по одному на кожен відкритий файл, тому їй майже завжди передають файл, папку, диск чи порт, щоб звузити список.

Без sudo вона показує лише ваші власні процеси. З ним — також процеси самої macOS, як-от Spotlight.

Команди lsof, які варто знати

Кожна приймає шлях, порт чи процес, щоб звузити список.

  • lsof /path/to/file: хто відкрив цей файл
  • sudo lsof /Volumes/NAME: усе, що відкрито на диску
  • lsof +D /path/to/folder: усе, що відкрито в папці
  • lsof -nP -iTCP:3000 -sTCP:LISTEN: що прослуховує порт 3000
  • lsof -p <PID>: усі файли, відкриті одним процесом

Як читати вивід

COMMAND — назва процесу, обрізана до девʼяти літер, PID — його номер, а USER — хто його запустив. FD каже, як відкрито файл: число з r для читання, w для запису або u для обох, cwd для папки, у якій працює процес, і txt для програми та бібліотек, які вона завантажила. NAME — шлях або мережева адреса.

Чому lsof працює повільно або виводить попередження

Перегляд великої папки з +D читає кожен файл у ній і може тривати хвилини. Попередження про файли, які не вдається прочитати, без sudo — це нормально.

Що питають люди

Що означає lsof?

List open files, тобто «список відкритих файлів».

Чи є lsof на Mac?

Так. Вона є в macOS, за шляхом /usr/sbin/lsof.

Чому lsof нічого не показує?

Жоден ваш процес не відкрив цей файл. Запустіть її з sudo, щоб охопити процеси macOS та інших користувачів.

Повʼязане

Покроково: Диск не вилучається.

Шукаєте щось краще за Монітор активності? Дивіться найкращі альтернативи Монітору активності для Mac або перегляньте усі терміни глосарію.