首页/系统/Linux 运维命令速查/strace 跟踪系统调用定位故障

strace 跟踪系统调用定位故障

strace 观察进程与内核的交互:卡在哪、报了哪个错误号、读写了什么文件;排查启动失败与性能卡顿的终极放大镜。

Linux 运维命令速查系统更新于 2026-10-12
用途跟踪进程的系统调用与信号
语法strace [选项] 命令 | strace -p PID
所属strace 软件包

常用示例

常用示例
strace -f -tt -e trace=openat,connect /opt/myapp/bin/start 2>&1 | tail -n 40
strace -p $(pgrep -f app.jar | head -1) -c   # 汇总统计
strace -e trace=file -f ./script.sh 2>&1 | grep -E 'ENOENT|EACCES' | head

输出到文件

输出到文件
strace -f -o /tmp/trace.log ./run.sh && grep -n EACCES /tmp/trace.log | head
strace 会显著拖慢目标进程且可能被 seccomp/ptrace_scope 限制;生产大流量进程慎 attach,优先短时抓取。

易错点

  • strace -f 跟多进程/多线程产生巨型输出,先 -e 过滤或 -o 落文件再分析
  • 容器内 strace 需要 CAP_SYS_PTRACE,被限制时改用 /proc/<pid>/stack 或应用自身日志

数据来源与参考

  • man 1 strace
  • strace 官方文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌