Існує кілька інструментів командного рядка, які можуть допомогти відстежувати такі речі. Щоб дізнатися, що викликає активність на диску, я б скористався fs_usage
. Ось приклад його використання для перегляду мого запасного обсягу під час створення файлу з bash:
$ sudo fs_usage | grep /Volumes/Spare
Password: [enter admin password; it will not echo]
08:56:10 open /Volumes/Spare/somefile 0.000827 bash
08:56:10 lstat64 /Volumes/Spare 0.000029 fseventsd
08:56:10 getattrlist /Volumes/Spare 0.000017 Finder
08:56:10 getattrlist /Volumes/Spare 0.000030 Finder
08:56:10 getattrlist /Volumes/Spare 0.000013 Finder
08:56:10 access_extended /Volumes/Spare 0.000045 Finder
08:56:10 lstat64 /Volumes/Spare/somefile 0.000038 mdworker
08:56:10 getattrlist /Volumes/Spare/somefile 0.000023 mdworker
08:56:10 getattrlist /Volumes/Spare/somefile 0.000034 mdworker
08:56:10 open /Volumes/Spare/somefile 0.000027 mdworker
08:56:10 getattrlist /Volumes/Spare/somefile 0.000018 mdworker
08:56:10 open /Volumes/Spare/somefile 0.000016 mdworker
08:56:10 getattrlist /Volumes/Spare/somefile 0.000017 mdworker
08:56:10 getattrlist /Volumes/Spare/somefile 0.000012 mdworker
^C
(Примітки: коли fs_usage
передається в іншу команду, вона форматує свій вихід для відображення 132-стовпчиків - щоб зробити його читабельним, слід розширити вікно терміналу, щоб воно відповідало. Також для виходу використовуйте control-C). Цікавими стовпцями тут є третій (шлях до файлу) та останній (ім'я процесу) - у цьому прикладі bash created / Volumes / Spare / somefile, Finder помітив, що щось змінилось, і перевірив атрибути папки, і mdworker (частина Spotlight ) помітив новий файл і вивчив його, щоб додати його до пошукового індексу.
Іншим корисним інструментом для подібних речей є lsof
(перелік відкритих файлів):
$ sudo lsof | grep /Volumes/Spare
mds 30 root txt REG 14,4 2 430 /Volumes/Spare/.Spotlight-V100/Store-V1/Stores/0DF7E0C0-E376-45EF-81DC-0F0C64676526/0.indexGroups
mds 30 root txt REG 14,4 2056 435 /Volumes/Spare/.Spotlight-V100/Store-V1/Stores/0DF7E0C0-E376-45EF-81DC-0F0C64676526/0.indexDirectory
mds 30 root txt REG 14,4 8 436 /Volumes/Spare/.Spotlight-V100/Store-V1/Stores/0DF7E0C0-E376-45EF-81DC-0F0C64676526/0.indexCompactDirectory
mds 30 root txt REG 14,4 2731 400 /Volumes/Spare/.Spotlight-V100/Store-V1/Stores/0DF7E0C0-E376-45EF-81DC-0F0C64676526/live.0.indexGroups
mds 30 root txt REG 14,4 1024 406 /Volumes/Spare/.Spotlight-V100/Store-V1/Stores/0DF7E0C0-E376-45EF-81DC-0F0C64676526/live.0.indexCompactDirectory
[...etc...]
Тут назва процесу знаходиться в першому стовпчику, а шлях до файлу - в кінці (а відображення ще ширше). У цьому прикладі все, що там є mds (інша частина Spotlight), сидить там із відкритою базою даних індексів.
Хоча fs_usage
це добре для перегляду активності з часом (але не показуватиме відкриті, але неактивні файли), lsof
дає короткий знімок програм, які використовують файли (але не показує, наскільки вони активні, і пропускатиме файли, які ' знову відкриваються, використовуються, а потім негайно закриваються). Ці інструменти разом дають досить гарну картину того, що відбувається.