главная/Как узнать, какой процесс пишет в файл
find process writing to file with lsof

Как узнать, какой процесс пишет в файл

Допустим есть файл debug.log который постоянно растет. Наша задача понять, какой процесс это делает и грохнуть его.

В таких случаях помогает команда lsof

lsof (List Open Files) показывает, какие файлы сейчас открыты процессами в системе:

  • какой процесс держит файл открытым
  • его PID
  • от какого пользователя он запущен
  • открыт ли файл на запись

Выполняем

sudo lsof debug.log

Пример вывода

COMMAND   PID     USER      FD   TYPE DEVICE SIZE/OFF NODE NAME
php-fpm   1234    www-data  3w   REG   8,1    12345    111  debug.log
  • COMMAND — имя процесса
  • PID — идентификатор процесса
  • FD — дескриптор файла

Если в колонке FD есть w, значит файл открыт на запись.

lsof показывает не того, кто писал когда-то, а того, кто держит файл открытым прямо сейчас. Обычно это и есть источник постоянной записи.

Как остановить процесс

Аккуратное завершение

sudo kill 1234

Принудительное завершение

sudo kill -9 1234