Bash 进程 CPU 使用率 100%。如何排除故障?

Bash 进程 CPU 使用率 100%。如何排除故障?

我有一个处于可运行状态的 bash 脚本,用户空间的 CPU 使用率为 100%。有没有办法可以更仔细地检查导致问题的原因,而无需终止进程,例如进行堆栈跟踪?

答案1

使用以下命令查看您的进程strace

strace -p <pid_of_your_process>

答案2

以 身份运行脚本sh -x yourscript。这将打印出它正在执行的所有命令,并且您可以看到它卡在哪里。

然后,您可以最终将strace减慢速度的命令添加到检查其对系统函数的调用。这会生成大量输出到 stderr。您可以重定向到日志文件,例如strace yourprogram 2> log

另一种可能性是使用 连接到正在运行的进程,这实际上需要更多地了解被调用的程序gdb。您可以使用 找到哪个进程占用了 100% top。使用 连接到正在运行的程序

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

相关内容