---
tags: [linux, cheatsheet, tooling]
verified: 2026-09-02
---

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

[← Назад к обзору](./linux-perf-tools.md)

---

## strace

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

```bash
# Трассировка запущенного процесса по 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).

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

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

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

---

## perf trace

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

```bash
# Трассировка 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() в системе в реальном времени.

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

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

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

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

---

## execsnoop

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

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

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

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

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

---

## eStrace 🟢

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

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

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

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

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

---

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

- [Linux — средства диагностики производительности](./linux-perf-tools.md) — обзорная карта инструментов
- [Linux — справочник команд: фреймворки трассировки](./linux-tldr-tracing.md) — более глубокий уровень трассировки
- [TLPI — база знаний](./tlpi-start.md) — системные вызовы Linux с точки зрения программиста
- [Вход в ядро и переключение контекста](./os-kernel-entry.md) — та же граница со стороны того, кто её реализует: механика входа, кадр входа, стоимость перехода
