The Apple Geek

Чему ты научился сегодня?

Нахождение процесса, заблокировавшего файл (lsof)

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

Ситуация - я начал конвертировать видео для iPad, но процесс занял больше времени, чем я предполагал и мне пришлось его отменить. Остался файл с результатом, но он незавершён и, конечно же, я решил его удалить. Но попытка не удалась:

Что делать? Всё просто - я зашёл в Terminal.app и с помощью команды lsof нашёл процесс, который заблокировал файл:

$ lsof Downloads/File-HQ-ViDEO.m4v
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
ffmpeg  84670 ctrld    4w   REG   14,2 32324969 13127063 Downloads/File-HQ-ViDEO.m4v

Конвертер видео при прерывании конвертации не убил процесс ffmpeg (идентификатор процесса или же PID указан во второй колонке). Я это сделал вручную:

$ kill 84670

После чего файл m4v нормально удалился.

Вы можете посмотреть другие примеры использования lsof в моих статьях ”Находим открытые файлы в каталоге” и ”Идентификация через Terminal.app сетевых сервисов (lsof)”.

Comments