首页/系统/Linux 运维命令速查/场景:进程卡死用 strace 定位
本包目录(613 条)
文件与目录76 条文本处理77 条网络命令82 条
进程与作业69 条
磁盘与文件系统51 条用户与权限44 条日志与排查40 条systemd 与服务42 条包管理34 条性能与监控48 条定时任务与计划50 条

场景:进程卡死用 strace 定位

服务不响应但没崩:attach 看它现在停在哪个系统调用(网络?磁盘?锁?),几十秒就能给出方向。

Linux 运维命令速查系统更新于 2026-10-12
场景进程假死/hang 住
组合strace -p + -e trace + wchan 对照

快速看现场

快速看现场
pid=$(pgrep -f 'app-server' | head -1)
timeout 5 strace -f -p $pid -e trace=network -s 128 2>&1 | tail -30
cat /proc/$pid/wchan; echo          # 内核等待点(无 strace 时也能看)

分类解读

分类解读
# 停在 epoll_wait/accept → 没流量或事件循环闲
# 停在 read/write/recv → 对端慢或大块 IO
timeout 5 strace -f -p $pid -e trace=read,write,openat 2>&1 | tail -20
# 停在 futex → 锁竞争/死锁嫌疑
attach 输出默认到 stderr:管道时记得 2>&1;用 timeout 包住避免忘记退出。

易错点

  • ptrace 会短暂停住目标:生产 attach 控制在几秒内,别长时间挂着
  • 容器里 strace 可能缺 SYS_PTRACE 权限:加 --cap-add=SYS_PTRACE 或换用 /proc/PID/stack(root)

数据来源与参考

  • man 1 strace(strace 官方手册)

相关工具

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