Linux Labs

Система изнутри: ресурсы, ядро, процессы / Ступень 7 из 12

strace и /proc: что делает процесс

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 8 · на машине · 6 мин

Системные вызовы

Причину nightsync не назвала, но всё, что она успела сделать, прошло через ядро. Это и показывает strace.

Программа не открывает файлы, не читает диск и не ходит в сеть сама — она просит об этом ядро. Каждая такая просьба — системный вызов: openat открывает файл, read и write читают и пишут, connect подключается к адресу, exit_group завершает процесс.

strace запускает программу и печатает каждый её вызов строкой: имя, аргументы и после = — результат. Вот две строки из трассировки nightsync:

openat(AT_FDCWD, "/usr/local/bin/nightsync", O_RDONLY|O_CLOEXEC) = 3
close(3)                                = 0

Успешный openat возвращает номер открытого файла — дескриптор, дальше программа обращается к файлу по этому номеру. Отказ — -1 и имя ошибки с пояснением: ENOENT (No such file or directory) — файла нет, EACCES (Permission denied) — нет прав.

strace пишет в поток ошибок, и вывод длинный: у nightsync больше 500 строк. Программа выходит сразу после отказа, поэтому причину ищи в конце — последний вызов с -1 перед exit_group.

Упражнение · посмотреть

Посмотри конец трассировки

В ~/sync-lab запусти nightsync под strace и посмотри последние восемь строк вывода.

Сначала предположи

nightsync отправляет заказы на сервер архива. Какой вызов окажется последним с результатом -1 перед выходом?

Теперь начни упражнение, выполни команду и сверь прогноз с выводом.

Войти и начать Машина доступна после входа
Ubuntu 24.04
Загрузка…