Подивіться, який процес використовує файл у Mac OS X


93

Я хотів би мати можливість відстежувати файл і бачити, який процес стосується цього файлу. Це можливо? Я знаю, що я можу побачити список відкритих процесів у моніторі діяльності, але я думаю, що це швидко відбувається для мене. Причиною цього є те, що я використовую фреймворк, і я думаю, що замість налагоджувальної використовується системна версія фреймворку, і я хотів би побачити, який процес стосується цього.


1
це питання використання краще запитав на Super User
Michael Dautermann


ПРИМІТКА: ^^^ ДУЖЕ ВАЖЛИВЕ, подібне запитання - FYI ;-)
Бред Паркс

Відповіді:


90

lsof буде відображати відкриті файли, але це може бути трохи незручно для миттєвих дотиків (наприклад, якщо файл не відкривається під час запуску lsof, він не відображається).

Я думаю, що найкращим варіантом для вас буде fseventer.app від fernLightning . Це "nagware" і дозволяє переглядати (графічно) API fsevents в режимі реального часу.


39
lsof | grep myfilenameпрацював у мене. У моєму кошику є файл PDF, за яким система стверджує, що використовується. Дивно lsofстверджує, що він використовується, Previewале Preview, здається, не запущений (наприклад, коли я переходжу через вкладку команд через запущені програми), але Activity Monitorпоказує, що він запущений. Дурний попередній перегляд.
Dave Sag

Це ідеально підходить для тимчасових файлів (тобто файлів, які не залишаються відкритими, але до них торкаються лише під час збереження).
Jeronimo Colon III

Я мав подібну проблему сьогодні з файлом у моєму кошику, який зберігається в процесі попереднього перегляду зомбі. Відкриття попереднього перегляду та вихід із нього знову вирішили проблему для мене. Я думаю, що Preview регулярно зберігає файли, хоча вже вийшов. Я часто відкриваю зображення з Evernote в Preview, щоб обрізати їх, і найчастіше - частіше за все - навіть після того, як я кинув Preview, Evernote воює, що зображення все ще відкрите в іншій програмі.
Vihung

Це здається схожим на проблему, яка виникає у мене зараз - все ще немає рішення. Я завантажив файл за допомогою Chrome, а потім перемістив його за допомогою Finder в іншу папку. Він виявився сірим, тому я використав lsof, щоб з’ясувати, у кого відкритий файл: Finder. Я спробував примусово вийти з Finder (який автоматично перезапускає його). Це не спрацювало. Я спробував закрити свій ноутбук, придумавши, що це все заспить, і, сподіваюся, вирішити проблему. Це теж не спрацювало. lsof продовжує показувати Finder як винуватця, і він продовжує відображати сірий колір в інтерфейсі.
Віктор Енгель,

1
Цікаво, що закриття вікон шукача, здавалося, вирішило проблему. Однак, якщо я відкрив нове вікно пошуку і перейшов до тієї ж папки, проблема залишалася. Я вирішив проблему, перетягнувши помилковий файл у кошик (видавши попередження про те, що в програмі, що має відкритий файл, можуть бути негативні наслідки), а потім скопіював файл.
Віктор Енгель,

94

Це просто: sudo fs_usage | grep [path_to_file]


10
Це, безумовно, найкраща відповідь тут.
NuSkooler

fs_usage слід запускати як root ... це не найкраще рішення.
bontoJR

Це показує події fs? Якщо процес має відкритий файл, але при цьому він нічого не робить, тут нічого не відображається. Або, принаймні, здавалося, це мій досвід. sudo fs_usage | grep musiclibraryне показав нічого, але sudo lsof | grep musiclibraryпоказав 3 процеси доступу до файлів бази даних музичної бібліотеки.
gman

43

Але я витратив 2 хвилини на гугл і знайшов тут вашу відповідь .

$ lsof | grep [що завгодно]

Де [все] замінено на ім'я файлу, яке ви шукаєте. З цим ви зможете побачити, яка програма відчайдушно тримається на вашому файлі, що підлягає пошкодженню. Як тільки ви вийдете з цієї програми, ваш кошик порожній.


1
Проблема в тому, що я повинен спробувати ввести lsof дуже швидко. це може бути лише тимчасовим
JPC

13
lsof -r переводить lsof у повторний режим
stoutyhk

Має сенс робити grep на випадок, якщо файл буде випущено.
Рей Хантер,

16

Швидший спосіб:

$ lsof [path_to_file]

Це рішення не вимагає кореневого пароля і дає вам такий, зрозумілий, результат:

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
Finder     497  JR7   21r   REG    1,2   246223 33241712 image.jpg
QuickLook 1007  JR7  txt    REG    1,2   246223 33241712 image.jpg

15

Інший варіант - Лінивець . Це безкоштовний графічний інтерфейс з відкритим кодом для LSOF, про який згадували інші.


1
Ого, це справді чудовий інструмент, дякую за обмін! Це чудово працювало для пошуку процесу, про який я загубив.
RayB

2
Я, як правило, віддаю перевагу рішенням командного рядка, оскільки вони є більш портативними, але я повинен визнати, що це дуже приємний інструмент! Дякую за пропозицію.
форма
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.