Linux 排查
一、排查CPU使用率过高
1. 找出耗CPU的进程
使用top命令查看内存、cpu及各进程信息
2.找出耗cpu的线程情况
top -H -p [进程id]
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu | grep [进程id]
3.定位线程堆栈信息,找到异常代码
printf "%x\n" [线程id] 将线程id转换为16进制 jstack pid |grep tid -A 30 [16进制线程id] 打印线程的堆栈信息
二、排查可执行程序崩溃
1.core文件
是程序崩溃后的内存数据,用gdb打开core文件,打开就是崩溃位置
gdb --core=./core main
bt //看调用栈
2.使用demsg
编译程序,-g 表示编译时加入调试信息
gcc -o test1 -g test1.c
使用dmesg命令查看系统日志错误信息
dmesg | grep main
[54106.016179] test1[8352] trap divide error ip:400506 sp:7fff2add87e0 error:0 in test1[400000+1000]
这条信息里的ip字段后面的数字就是test1程序出错时所程序执行的位置。使用addr2line就可以将400506转换成出错程序的位置:
$ addr2line -e test1 400506 /home/hanfoo/code/test/addr2line/test1.c:5
指的是test1.c的第5行
3.strace
strace -p pid // 打印进程的系统调用信息,包括参数、返回值等
三、查看端口号占用情况
netstat -anp |grep 3306 查看3360端口号的占用情况,LISTEN则表示被占用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具