Как отследить доступ к файлу с помощью dtrace на солярисе

Я хотел бы узнать, как я могу отслеживать (показывать) доступ к файлам в Solaris. Я уже нашел инструментарий dtrace в надежде, что voptrace будет отвечать всем требованиям. Я побежал с voptrace -t /my/path Если я ls или же cat файлы по этому пути не выводят. Я смотрю на неправильный инструмент? Может ли кто-то предложить другой, чтобы найти решение?

ОБНОВИТЬ
@bahamat

Хорошо, это давало сообщения об ошибках как это:

dtrace: error on enabled probe ID 3 (ID 126: syscall::openat:entry): invalid address (0xffd19652) in predicate at DIF offset 28

После перенаправления stderr кажется, что он дает довольно близко к тому, что я хочу.

1 ответ

Брендан Грегг имеет ряд хороших dtrace один лайнер на своем сайте. Среди них этот вкладыш для просмотра файлов, открытых процессом:

dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'

Расширяя это, вы можете наблюдать, как открывается конкретный файл, добавляя предикат:

dtrace -n 'syscall::open*:entry /copyinstr(arg0)=="/etc/passwd"/ { printf("%s %s",execname,copyinstr(arg0)); }'

Дает следующий вывод:

CPU     ID                    FUNCTION:NAME
  2  12622                     open64:entry cat /etc/passwd

ls немного отличается, в этом ls file не открывается file, Оно использует stat вместо (в частности, lstat64) так что зонд будет syscall::*stat*:entry,


Обратите внимание, что dtrace реализации варьируются. Команды выше были запущены на иллюминаторах. YMMV.

Другие вопросы по тегам