Как проверить, что блокирует файл?

11

Я заметил, что иногда Mail.app блокирует файлы. Сама блокировка позволяет перемещать файлы в корзину, но не позволяет очищать корзину. (Возможно, в этом случае Trash следует переименовать в Thrash)

Есть ли способ (с помощью команды терминала или приложения) увидеть, какое приложение блокирует файл и / или разблокирует файл, не выходя из приложения?

Михал М
источник
Ха - ха! Ты поймал меня. ;)
Michal M

Ответы:

13

Как говорит Рабарберски, lsofможет использоваться для поиска любого процесса с открытым файлом. Обратите внимание, что вам нужно запустить программу от имени пользователя root, т. Е. Использовать ее sudo, и вы можете указать путь к файлу, который вас интересует, в качестве аргумента, поэтому нет необходимости в grepвызове в подсказке, на которую указывает Рабарберски. Кроме того, если процесс удерживает блокировку файла, вы должны увидеть это по столбцу FD в lsofвыходных данных. Смотрите страницу руководства для деталей. (Когда я запускаю sudo lsofна своей машине, я не вижу заблокированных файлов, поэтому я не гарантирую, что это работает правильно на Mac. В sudoконце концов, это универсальная программа Unix, и, возможно, некоторые функции не работают в OSX.)

Вы не можете разблокировать файл, не убив процесс, который удерживает блокировку. Но вы можете удалить его rmиз командной строки.

Харальд Ханче-Олсен
источник
Просто заметил глупую опечатку: там, где написано « sudoв конце концов…», это lsofя и хотел упомянуть. Не собираюсь редактировать это - это слишком незначительно, чтобы оправдать удар по первой полосе.
Харальд Ханче-Олсен
6

Как указывали другие, Лсоф делает свое дело. Чтобы сделать задачу еще проще, я предлагаю (бесплатное) приложение «Что меня держит» (URL: http://www.hamsoftengineering.com/products/wkm/wkm.html ), которое в основном является интерфейсом для lsof и имеет несколько вариантов экономии времени.

Акос
источник
1
Похоже, ссылка не работает, поэтому здесь есть альтернативное расположение: macupdate.com/app/mac/27807/what/'s-keeping-me ?
Михал М