Подивіться, який процес використовує файл у 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.