strace в Linux: трассировка системных вызовов
Обновлено 3 июля 2026 г.
strace показывает каждый системный вызов программы к ядру: какие файлы она открывает, что читает и где сбоит.
Синтаксис
strace команда # или: strace -p PIDЧастые случаи
strace ls # все системные вызовы команды ls
strace -p 1234 # подключиться к работающему процессу
strace -e trace=openat ls # только вызовы открытия файлов
strace -f ./app # вместе с дочерними процессами
strace -c ls # сводка: какие вызовы и сколько времениКак это устроено: граница между программой и ядром
Программа сама почти ничего не делает напрямую: открыть файл, послать пакет, выделить память - всё это просьбы к ядру, системные вызовы.
straceвстаёт на эту границу и печатает каждый вызов с аргументами и результатом. Поэтому он бесценен, когда программа «молча не работает»: видно, какой файл она не нашла (ENOENT) или к какому сокету не смогла подключиться. Цена - сильное замедление, так что на проде применяют точечно. strace требует привилегию PTRACE, которой в нашей песочнице нет.
В книге
Подробно эта тема разобрана в главе Системная диагностика и методология.
См. также
Открытые файлы: lsof, Файловая система /proc, Просмотр процессов.