New We are sorting MAX channels into categories and territories. Read the news
Loading image…

Linux tip: когда процесс завис, не убивайте его вслепую


Если процесс завис, не обязательно сразу делать 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 - один из тех инструментов, которые превращают «оно зависло» в нормальный технический диагноз.
Views: 426
Open in MAX Report an inaccuracy

Report an inaccuracy

Describe what needs fixing. If you have a source, add a link.

You are leaving datool.ru

The link leads to an external website. datool.ru is not responsible for its content — check the address before entering passwords or payment details.

Redirecting in 10 s

Go