Поддержка Консалтинг Обучение Jamf Pro Блог

opensnoop

Кирилл Воронин 21.08.2010


/* картинка для красоты и подчеркивания ботанической составляющей */

Мне кажется, на сайте уже упоминались 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