Если процесс завис, не обязательно сразу делать
kill -9 и гадать, что там произошло.Можно подключиться к нему через
strace и посмотреть в реальном времени, на каком системном вызове он застрял.Команда:
strace -p <PID> -e trace=read,write,open
Что это даёт:
видно, читает ли процесс данные
видно, пишет ли он куда-то
видно, какие файлы открывает
можно понять, ждёт ли он stdin, файл, сокет или pipe
не нужно менять код
не нужно перезапускать сервис
Например, если программа «висит», strace может показать, что она просто ждёт read() из file descriptor. То есть проблема не в CPU, не в deadlock и не в магии Linux, а в том, что процесс ждёт ввод.
Это особенно полезно в проде, когда нельзя просто взять и перезапустить сервис ради эксперимента.
Базовый сценарий:
pidof my_process
sudo strace -p <PID> -e trace=read,write
И дальше вы видите, чем процесс реально занят.
strace - один из тех инструментов, которые превращают «оно зависло» в нормальный технический диагноз.



