温馨提示×

linux进程怎么查错

小樊
58
2026-09-27 17:43:20
栏目: 智能运维

在 Linux 下“查错”通常分几种情况:进程起不来、进程卡死、进程崩溃、运行结果不对、资源异常。下面按常见场景给你一套实用排查思路。


一、进程起不来 / 启动失败

1. 看启动报错(最直接)

./your_program

或

systemctl status your_service
journalctl -xe

2. 检查权限

ls -l your_program
chmod +x your_program

3. 检查依赖库

ldd your_program

如果看到 not found,就是缺库。


二、进程运行中但“不对劲”

1. 看进程是否在跑

ps -ef | grep your_process
top
htop

2. 看资源占用

top -p <pid>

关注:

  • CPU 是否 100%
  • 内存是否持续增长(内存泄漏)
  • 是否频繁 IO

三、进程卡死 / 无响应

1. 看进程状态

ps -o pid,stat,cmd -p <pid>

常见状态:

  • D:不可中断睡眠(通常是磁盘/IO问题)
  • S:睡眠
  • R:运行
  • Z:僵尸进程

2. 看在等什么

strace -p <pid>

(非常关键,能看到系统调用卡在哪)

3. 看线程

top -H -p <pid>
ps -T -p <pid>

四、进程崩溃 / 段错误

1. 用 dmesg 看内核记录

dmesg | tail

常见:

segfault at ...

2. 用 gdb 调试

gdb ./your_program
run
bt

如果是已崩溃的 core:

gdb ./your_program core
bt

3. 打开 core dump

ulimit -c unlimited

再运行程序,生成 core 文件。


五、日志 & 输出查错

1. 重定向看输出

./program > out.log 2>&1

2. systemd 服务

journalctl -u your_service -f

六、网络 / 文件相关问题

网络

netstat -antp | grep <pid>
ss -antp
tcpdump -i any port 8080

文件

lsof -p <pid>

七、推荐排查顺序(实战)

  1. ps / top 看进程在不在
  2. strace -p pid 看卡哪
  3. dmesg 看是否崩溃
  4. gdb + core 定位代码
  5. 查日志(应用 / systemd)

如果你能说具体一点,比如:

  • C / C++ / Python / Java?
  • 是起不来、崩了、还是卡住?
  • 有没有报错信息?

我可以直接帮你定位问题。

0 踩