Что такое strace в Linux?

«Что такое strace в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

strace — это утилита командной строки для диагностики и отладки в Linux. Она перехватывает и записывает системные вызовы и сигналы, которые процесс получает или отправляет ядру операционной системы. Это незаменимый инструмент для понимания, почему программа падает, зависает или ведет себя неожиданно.

Базовое использование:

# Трассировка выполнения команды `ls`
strace ls /home

# Сохранить вывод в файл для анализа
strace -o debug.log ./my_application

Полезные опции для DevOps-задач:

  • -p <PID> – подключиться к уже запущенному процессу.
  • -f – трассировать также дочерние процессы (форки).
  • -e trace=<названия> – фильтровать вызовы (например, -e trace=file для операций с файлами, -e trace=network для сетевых).
  • -c – получить сводную статистику по времени и количеству вызовов для профилирования.
  • -y – подробно отображать дескрипторы файлов и сокетов.

Пример анализа: Если приложение не может прочитать конфигурационный файл, strace покажет вызов openat или stat с путем к файлу и кодом ошибки (например, ENOENT — "No such file or directory").