我有一个处于可运行状态的 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`)