Содержание

Как выполнить трейс доступа к файловой системе в Linux

При отладке разных скриптов и программ в Linux может потребоваться анализ происходящих на файловой системы событий при запуске соответствующего скрипта или приложения. На помощь нам придёт утилита strace, которая может быть установлена из репозиториев разных дистрибутивов Linux.


Пример вызова strace

Пример вызова приложения, поведение которого на файловой системе нужно исследовать:

$ strace -xf -eopen -o /path/to/log /path/to/program

В следующем примере мы будем вызывать текстовый редактор nano и собирать лог его активности в файловой системе (strace-nano.log) в домашнем каталоге текущего пользователя:

$ strace -xf -eopen -o ~/strace-nano.log nano ~/temp.txt


Анализ полученного лога

Пример обработки лога для выборки событий доступа к файлам

$ sed -n 's/.*open(\(.*\))\s*=.*/\1/p' ~/strace-nano.log | sort
"/etc/ld.so.cache", O_RDONLY|O_CLOEXEC "/etc/nanorc", O_RDONLY "/home/user/.nano_history", O_RDONLY "/home/user/.nanorc", O_RDONLY "/home/user/temp.txt", O_RDONLY "/home/user/temp.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666 "/lib/terminfo/x/xterm", O_RDONLY "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC ...

Пример обработки лога для выборки событий доступа к файлам с попыткой записи:

$ sed -n 's/.*open(\(.*\))\s*=.*/\1/p' ~/strace-nano.log | grep -v O_RDONLY | sort
"/home/user/temp.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666

Дополнительные источники информации:


Проверено на следующих конфигурациях:

Версия ОС
Debian GNU/Linux 8.10 (jessie)

Автор первичной редакции:
Алексей Максимов
Время публикации: 09.06.2018 12:35