Есть несколько инструментов командной строки, которые могут помочь отследить подобные вещи. Чтобы узнать, что вызывает активность на диске, я бы использовал 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 создал /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
дает снимок того, какие программы используют какие файлы (но не показывает, насколько они активны, и пропустит файлы что открыли, использовали, то сразу закрыли). Вместе эти инструменты дают довольно хорошее представление о том, что происходит.