Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Bash: strace, system calls, Linux, tracing, debugging

Как посмотреть системные вызовы процесса в Linux?

Вопрос проверяет знание инструментов трассировки системных вызовов в Linux, что необходимо для отладки и анализа производительности приложений.

Короткий ответ

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

Длинный ответ

Что такое системные вызовы и зачем их отслеживать?

Системные вызовы — это интерфейс между пользовательскими программами и ядром Linux. Когда программа хочет выполнить привилегированное действие (например, чтение файла или создание процесса), она обращается к ядру через системный вызов. Отслеживание этих вызовов помогает диагностировать проблемы производительности, ошибки ввода-вывода или неожиданное поведение приложения.

Использование strace

Основной инструмент для трассировки — strace. Он запускает процесс или подключается к уже работающему и выводит все системные вызовы в реальном времени. Пример базового использования:

strace ls -l /tmp

Эта команда покажет все системные вызовы, которые выполняет ls при выводе содержимого каталога /tmp. Вывод может быть очень подробным, поэтому часто используют фильтры.

Фильтрация и опции

Чтобы сократить вывод, можно использовать опцию -e для фильтрации по типу вызова. Например, отследить только операции с файлами:

strace -e trace=open,read,write ls -l /tmp

Для подключения к уже запущенному процессу по его PID используется -p:

strace -p 1234

Полезные опции: -c для подсчёта статистики вызовов, -o file для записи в файл, -t для добавления временных меток.

Практический пример

Допустим, программа не может открыть конфигурационный файл. Запустим её под strace и найдём ошибку:

strace -e trace=open myapp 2>&1 | grep config

В выводе будет видно, какой путь пытается открыть программа и с каким результатом (например, ENOENT — файл не найден).

Вывод

Strace — незаменимый инструмент для отладки и анализа системных вызовов в Linux. Его стоит применять, когда нужно понять, как программа взаимодействует с ядром, особенно при поиске проблем с файлами, сетью или производительностью.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Bash

    Bash

  • Linux

    Linux

Ключевые слова

#strace

#system calls

#Linux

#tracing

#debugging

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.