Это «рентгеновский аппарат» для Linux-процессов. Он показывает все системные вызовы, которые делает программа: работа с файлами, сетевые соединения, управление памятью и многое другое.
Допустим, наш процесс не может записать в файл. Вместо перезапусков и логов просто запускаем:
strace -p <PID> -f -e trace=file
И видим примерно такую картину:
open("/var/log/app.log", O_WRONLY|O_CREAT) = -1 EACCES (Permission denied) write(2, "Permission denied", 17) = 17
Вот и ответ! Процессу не хватает прав на запись в /var/log/app.log.
1️⃣ Для запуска новой программы:
strace -f -o trace.log your_command
2️⃣ Для подключения к работающему процессу:
strace -p <PID> -o trace.log
3️⃣ Полезные фильтры:
strace -e trace=network # только сетевые вызовы strace -e trace=file # только работа с файлами strace -e trace=memory # управление памятью
🧠 Что можно узнать с помощью strace:
🚩 Важный момент: strace немного замедляет работу процессов, поэтому в продакшене используйте его аккуратно и кратковременно.
🔥 Этот инструмент особенно полезен когда: