Хелкод Скрипты и автоматизация

Хелкод Скрипты и автоматизация 

Linux, DevOps, автоматизация

1subscriber

20posts

goals1
$0 of $69 raised
Аренда серверов для экспериментов, домены, платные инструменты. Чем мощнее железо - тем интереснее эксперименты)
strace - смотрим, что процесс делает на самом деле

Бывает, процесс висит, жрёт CPU, но не падает. Логи молчат. Что делать? Танцы с бубном? Нет. Есть strace - утилита, которая показывает все системные вызовы процесса.

В Linux любая программа постоянно общается с ядром: читает файлы, пишет в сокеты, выделяет память. strace перехватывает этот диалог и показывает его вам.

Вариант 1 (Прицепиться к работающему процессу): процесс завис, но не умирает.
# Прицепиться к PID 1234
strace -p 1234

# Вывод:
# read(3, 0x7f8a2c000000, 4096) = -1 ETIMEDOUT (Connection timed out)
# Наглядно: процесс ждёт ответа от какого-то файлового дескриптора 3


Вариант 2 (Запустить программу под strace): нужно понять, почему падает при запуске.
# Запускаем и смотрим
strace ./my_binary

# Ищем строки с -1 (ошибка)
strace ./my_binary 2>&1 | grep -1


Вариант 3 (Фильтрация по конкретным вызовам): шума много, нужно только чтение файлов.
# Только open, read, write, close
strace -e trace=open,read,write,close ./my_binary

# Только сеть
strace -e trace=network ./my_binary


Вариант 4 (Сохранить вывод в файл): процесс падает редко, нужно записать всё.
strace -o /tmp/strace.log ./my_binary

Вариант 5 (Замерить время каждого вызова): где программа тормозит?
# -T показывает время выполнения каждого вызова
strace -T -e trace=read ./my_binary

# -c — сводная статистика в конце
strace -c ./my_binary


Когда strace бесполезен:
- Процесс тормозит, но не из-за системных вызовов (например, алгоритм O(n²))
- Проблема в самом ядре (туда уже нужен perf или trace-cmd)
- Программа работает с графикой/звуком через прямые вызовы драйверов

P.S. strace может влиять на производительность процесса в 10-100 раз. На проде прицепляйтесь аккуратно и ненадолго.

👉🏻 Я в Telegram - t.me/helcode
👉🏻 Я в VK - vk.com/helcode
👉🏻 Я на Boosty - boosty.to/helcode
Subscription levels2

Читатель

$0.69 per month
Уведомления о новых материалах
Спасибо, что вы со мной!

Поддержка

$3.5 per month
Всё из первого тарифа
Понимание, что вы помогаете каналу развиваться
Go up