1

У меня есть сценарий bash, который находится в работоспособном состоянии со 100% использованием процессора в пространстве пользователя. Есть ли способ, которым я могу более внимательно изучить причину проблемы, не убивая процесс, например, выполнить трассировку стека?

2 ответа2

2

Посмотрите на ваш процесс с помощью strace:

strace -p <pid_of_your_process>
0

Запустите скрипт как sh -x yourscript . Это напечатает все команды, которые он выполняет, и вы можете увидеть, где он застрял.

Затем вы можете в конечном итоге добавить strace к команде, которая замедляет процесс проверки его вызовов к системным функциям. Это генерирует множество выходных данных для stderr. Вы можете перенаправить в файл журнала, например, strace yourprogram 2> log

Другая возможность, которая на самом деле включает в себя знание о вызываемых программах, - это подключение к запущенным процессам с использованием gdb . Вы можете найти, какой процесс занимает 100% top . Подключиться к запущенной программе с

gdb program 1234   (where 1234 is the `pid` of `program`)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .