前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笔记:常用命令,调试,网络监测,端口监测

笔记:常用命令,调试,网络监测,端口监测

作者头像
何其不顾四月天
发布2023-03-10 13:26:49
9890
发布2023-03-10 13:26:49
举报
文章被收录于专栏:四月天的专栏

前言

前几个月换了一个新工作,Windows端完全转入了Linux服务器端,语言也彻底变成了C,偶尔夹杂着C++。对于我来说,之前的Vxworks,Qt,VS之类的IDE之下的调试定位也完全都没用了,最近一直在做提测项目,对问题定位,查找问题也有了一定的了解。 在这简单说一下,最近的定位调试命令。

端口分析命令

代码语言:javascript
复制
lsof -i:PortID //查看端口使用情况,被那个进程占用,占用协议,是否有等待,来判断端口是否阻塞,等等
代码语言:javascript
复制
lsof -p PID //查看PID进程进行的一些操作,查看是否有违规的,死锁,等等其他违法操作。也可以用来查看是否有句柄泄露等问题,看句柄数量即可。

CPU占用率过高,进程死循环或者死锁问题

代码语言:javascript
复制
top //不复述了,可以查看虚拟内存,实际使用内存,CPU占用率,内存占用率等,如果看到CPU单核占用率接近100%,也可以很明确断定是程序异常死循环问题导致。
代码语言:javascript
复制
top -H -p PID //查看某一个进程下的所有子线程,查看每个子线程的这个属性,如果有某一个或者多个子线程CPU占用率过高,着重分析
代码语言:javascript
复制
pstack pid >> pid.txt //将pid栈重定向到pid.txt,拿到txt后分析,死锁原因

如果进程过多,可以考虑写一个简单脚本来操作。

代码语言:javascript
复制
pmap -p <pid> //查看运行中动态链接库

死锁问题定位

在运行进程为多线程情况下,定位死锁问题。

代码语言:javascript
复制
gdb -p pid //挂载Gdb调试
attach -p //依附于某一个进程
thread apply all bt //查看所有线程栈信息
thread id //转到某一个线程
f id //查看线程某一步骤的详细信息
p lock //打印锁信息 owner 即可看到锁被哪一个进程占用,定位死锁信息

网络问题查看

代码语言:javascript
复制
iftop -p  //查看当前服务器下所有网络端口流量情况
iftop -p eht_name //查看指定网口网络流量情况
iperf3 -s -i 1 -d //客户端
iperf3 -c service.ip -i -1 -t 20 -d //服务端 网络流量交互情况,延时1S,20个包

其他命令

代码语言:javascript
复制
ps -ef 
ps -T -p pid
ps -ef |grep 
tail -f "file_name" |grep 
df -h
df -H
ll --full-time //显示全部时间
grep -r "str" find-path //查询文件内容分
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 端口分析命令
  • CPU占用率过高,进程死循环或者死锁问题
  • 死锁问题定位
  • 网络问题查看
  • 其他命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档