strace 跟踪:程序卡住时它在等什么
Linux系统 2026-11-13 00:22 19

程序不报错但就是不响应,strace 能告诉你它卡在哪一步。下面按“先判断、再动手、最后验证”的顺序展开,每一步都给出可核对的检查点。

涉及 strace命令、程序卡住、系统调用 的关键动作都写成了具体命令或配置项,可以照着走,也可以当检查表用。

基本用法

strace -p PID 附加到运行中进程,实时看到系统调用;-c 汇总统计各调用耗时。

卡住定位

输出停在 connect、read、futex 等调用上,分别对应网络等待、IO 等待、锁竞争三类经典问题。

启动跟踪

strace -f 跟踪子进程,排查服务启动失败时能看到它在哪个配置文件或端口上失败。

过滤技巧

-e trace=network 只看网络调用、-e trace=file 只看文件操作,输出瞬间清爽。

性能代价

strace 本身有明显开销,生产环境短时诊断用,不要长期挂着。

速查表

环节关键动作
基本用法strace -p PID 附加到运行中进程,实时看到系统调用;-c 汇总统计各调用耗时
卡住定位输出停在 connect、read、futex 等调用上,分别对应网络等待、IO 等待、锁竞争三类经典问题
启动跟踪strace -f 跟踪子进程,排查服务启动失败时能看到它在哪个配置文件或端口上失败
过滤技巧-e trace=network 只看网络调用、-e trace=file 只看文件操作,输出瞬间清爽

常见问题

Q:按文中写法改完,怎么确认真的生效?
不要只看配置文件,用对应的验证命令或从外部视角复测一次;改完先小流量观察一段,再全量推进,出问题能马上回退。

Q:按文中的步骤做完,还需要注意什么?
把处理过程和最终生效的参数记下来。同类问题再出现时直接对照记录,比重查一遍快得多。

Q:业务规模小,也要按这套标准来吗?
不需要一次到位。先把影响最大的两项做到位,剩余的随着业务增长逐步补齐,比一开始就追求完美更容易落地。

小结

回到这篇的 5 个环节:基本用法、卡住定位、启动跟踪、过滤技巧、性能代价。把这几个动作写进检查表,下次遇到同类问题按顺序过一遍,比凭经验跳步骤稳。

相关阅读:lsof 实战:文件被谁占用一查便知、磁盘健康监控:SMART与坏道处理、任务队列入门:为什么不该用crontab跑重任务。

延伸阅读:lsof 实战:文件被谁占用一查便知、Linux 用户与组管理:最小权限的落地、Docker Compose部署应用栈。

Powered by ©智简魔方