Библиотека — Linux — справочник команд: приложения и системные вызовы [X]
Шифр
linux-tldr-syscall
Разделы
cheatsheet linux tooling
Сверено
2 сентября — в этот день утверждения статьи сверялись с первоисточниками, а не правился текст
Объём
3 231 знак · 7 разделов · чтения несколько минут

Linux — справочник команд: приложения и системные вызовы


← Назад к обзору


strace

Трассировка системных вызовов процесса. Высокий оверхед (ptrace), но универсален.

# Трассировка запущенного процесса по PID
strace -p 1234

# Только вызовы работы с файлами, с таймштампами
# Класс пишется со знаком процента; форма trace=file объявлена устаревшей
strace -e trace=%file -t -p 1234

# Трассировка с дочерними процессами, вывод в файл
strace -f -o /tmp/trace.log ./myapp

# Подсчёт вызовов и времени (summary), без вывода каждого вызова
strace -c ./myapp

# Фильтр по конкретным syscall, показать строки до 256 символов
strace -e trace=read,write -s 256 -p 1234

ltrace

Трассировка вызовов динамических библиотек (аналог strace для userspace).

# Трассировка всех библиотечных вызовов
ltrace ./myapp

# Только вызовы malloc/free с таймштампами
ltrace -e malloc+free -t ./myapp

# Подсчёт вызовов (summary)
ltrace -c ./myapp

perf trace

Низкоуровневая трассировка syscall через perf — значительно меньший оверхед, чем strace.

# Трассировка syscall конкретного процесса
perf trace -p 1234

# Только сетевые вызовы, с длительностью
perf trace -e 'connect,accept,sendto,recvfrom' -p 1234

# Трассировка команды целиком плюс сводка в конце
perf trace --with-summary ./myapp

# Системные вызовы по всей системе в течение 5 секунд
perf trace -a -- sleep 5

# Только вызовы дольше 100 мс (--duration — порог, а не длительность сеанса)
perf trace -a --duration 100

opensnoop

eBPF-инструмент: трассировка всех open()/openat() в системе в реальном времени.

# Все открытия файлов в системе
opensnoop

# Только для конкретного процесса
opensnoop -p 1234

# Только неудачные открытия (errno != 0) — поиск отсутствующих файлов
opensnoop -x

# Фильтр по имени процесса (по имени файла ключа нет)
opensnoop -n nginx

execsnoop

eBPF-инструмент: трассировка запуска новых процессов (exec()) в реальном времени.

# Все новые процессы в системе
execsnoop

# С таймштампами и аргументами командной строки
execsnoop -t

# Показать в том числе неудачные exec (поиск проблем с PATH, правами)
execsnoop -x

# Фильтр по имени команды
execsnoop -n nginx

eStrace 🟢

eBPF-замена strace с существенно меньшим оверхедом. Не использует ptrace.

# Трассировка процесса (аналог strace -p)
estrace -p 1234

# Трассировка с фильтром по syscall (-f, синтаксис близок к strace: read,write, %file)
estrace -f read,write -p 1234

# Трассировка запуска команды
estrace -- ./myapp

Примечание: eStrace менее зрелый, чем strace. Для production-отладки с минимальным оверхедом часто предпочтительнее perf trace.


Связанные заметки

Из библиотеки института уносят только знания. Читателей здесь не считают: посещение не регистрируется, отметок в издании не остаётся, счётчиков нет ни у одного издания фонда.

Издание пополняется и пересверяется. Текст доступен на условиях CC BY-SA 4.0 — унесённое можно передавать дальше на тех же условиях.