/* картинка для красоты и подчеркивания ботанической составляющей */
Мне кажется, на сайте уже упоминались lsof, fs_usage и не упоминались fseventer (так как есть статья на сайте theapplegeek.ru) и Instruments (так как мы не разработчики).
Но решая на днях какую-то задачу, я подумал – а почему нет заметки об opensnoop?
opensnoop – полезная утилита, входящая в состав Mac OS X и показывающая какие файлы открывает процесс.
А ведь как правило это то, что доктор прописал.
Программа не запускается? К каким ресурсам она обращается?
Компьютер загружен, top говорит, что 98% CPU отъедает perl?
bash-3.2# opensnoop
UID PID COMM FD PATH
0 94805 perl 6 /Library/WebServer/Documents/lightsquid/report/20100713/10.0.0.23
0 94805 perl 5 /Library/WebServer/Documents/lightsquid/report/20100713/.total
0 94805 perl 6 /Library/WebServer/Documents/lightsquid/report/20100713/10.0.0.30
0 94805 perl 6 /Library/WebServer/Documents/lightsquid/report/20100713/10.0.0.38
Вывод команды прост – ID пользователя, ID процесса, не особо интересующий нас файловый дескриптор (О, K&R!; впрочем, нас заинтересует -1 = файл не найден), полный путь к файлу.
bash-3.2# opensnoop
UID PID COMM FD PATH
502 322 rapagent -1 /var/run/rapserverd.pid
502 933 mdworker 7 /private/tmp/badge.tif
502 951 Vox 9 /Users/kirilka/Music/iTunes/iTunes Music/Gong/1975 – Shamal/05 Mandrake.mp3
97 1606 fontd 5 /var/folders/zz/zzzivhrRnAmviuee++++ME+++42/-Caches-/com.apple.FontRegistry/fontregistry.user-journal
Полезные ключи:
-n имя процесса (ну, или -p и ID процесса), – что происходит при открытии системной настройки Accounts?
bash-3.2# opensnoop -n DirectoryService
UID PID COMM FD PATH
0 15 DirectoryServic 20 /var/db/dslocal/nodes/Default/users
0 15 DirectoryServic 21 /var/db/dslocal/nodes/Default/users/_amavisd.plist
0 15 DirectoryServic 21 /var/db/dslocal/nodes/Default/users/_appowner.plist
-f имя файла, – какой процесс поменяет мой пароль при смене пароля в Accounts?
bash-3.2# opensnoop -f /var/db/shadow/hash/23E5F1CD-5169-47DC-9B5B-81833E252A30
UID PID COMM FD PATH
0 15 DirectoryServic 20 /var/db/shadow/hash/23E5F1CD-5169-47DC-9B5B-81833E252A30