Як визначити, який процес створює файл?


6

У моєму домашньому каталозі раптом з’явилися два файли, які називаються «аа» та «помилка». Вони порожні. Мені цікаво, як вони туди потрапили. Я видалив файли, і вони знову створюються через кілька секунд.

Чи є спосіб відстежувати домашній каталог для створення файлів, щоб з’ясувати, звідки вони взялися?

Я зазначу, що lsofне могло допомогти в цьому випадку (я отримав порожній результат за допомогою lsof aa)


Такі схожі. залишки спроби програмування в Node.js. Подивіться, як названі змінні в цій нитці переповнення стека .
ДжейкГулд

@JakeGould, дякую, але у вашому посиланні відображається спеціальний код. Це не пов'язано.
Квадз

Відповіді:


10

fs_usage є вашим інструментом для цього.

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

Якщо ваш домашній каталог, /Users/meтоді ви можете відфільтрувати/Users/me/aa

mac:~ me$ sudo fs_usage | grep /Users/me/aa
09:35:21  stat64            /Users/me/aa      0.000033   touch       
09:35:21  utimes            /Users/me/aa      0.000104   touch       
09:35:21  fsgetpath         /Users/me/aa      0.000119   Finder      
09:35:22  lstat64           /Users/me/aa      0.000039   fseventsd   
09:35:22  fsgetpath         /Users/me/aa      0.000027   mds         
09:35:22  getattrlist       /Users/me/aa      0.000064   mds         
09:35:22  listxattr         /Users/me/aa      0.000012   mds         
09:35:22  getattrlist       /Users/me/aa      0.000130   mds         
09:35:22  getattrlist       /Users/me/aa      0.000033   mds         
09:35:22  open              /Users/me/aa      0.000071   mdworker_sha
09:35:22    RdData[AT2]     /Users/me/aa      0.000331 W mdworker_sha
09:35:22  getattrlist       /Users/me/aa      0.000042   mds         
09:35:24  lstat64           /Users/me/aa      0.000114   rm          
09:35:24  access            /Users/me/aa      0.000209   rm          
09:35:24  unlink            /Users/me/aa      0.000909   rm          
09:35:25  lstat64           /Users/me/aa      0.000042   fseventsd   
09:35:25  lstat64           /Users/me/aa      0.000006   rm          

(Примітка: я видалив багато білого простору вгорі - fs_usage команда виводить велику кількість порожнього простору , так що ви не можете легко побачити сенсорну команду на крайньому правому , якщо я копіювати / вставити точний результат.)

Тут я використовую touchкоманду для створення файлу, додаю до нього рядок, а потім - rmз командного рядка.

mac:~ me$ touch ~/aa
mac:~ me$ echo foo >> ~/aa
mac:~ me$ rm ~/aa

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

Сторінка керівництва для цієї команди є досить щільною (і не "як"), що є типовим, але кращим, ніж жодна документація від Apple, як її використовувати.


Дякую чудова відповідь. Я вважаю, що команда fs_usage базується на об'єкті FSEvents MacOS. Чи знаєте ви, чи можна використовувати цей інструмент також із програми iOS?
Мотті Шноор

@bmike, під час використання touchми можемо бачити stat64та openкомандувати. Мені цікаво, яка команда фактично створює файл. У моєму випадку я отримую безпосередньо наступне без нічого перед fsgetpathFinder: imgur.com/a/AsA9O5s
Квад

Це добре зробить це питання. У моєму випадку stat64 створив файл. Я сумніваюсь, що Finder і mds створюють файл у вашому випадку, тому мені потрібно буде побачити більше журналів, щоб допомогти. @Kwadz Коли ви видаляєте файл, який перший запис у fs_usage?
bmike

@bmike, коли я видаляю
Kwadz

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