Сегодня я покажу простой приём поиска процесса, который блокирует файлы, из-за чего их невозможно удалить.
Ситуация - я начал конвертировать видео для 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)”.