在Linux下查看某个端口运行的指令
1. 首先通过netstat来查看端口对应的进程号
比如抓取端口53这个DNS服务的进程
netstat -tulnp | grep '53'
可以看到53这个端口号对应的pid是720
2. 通过ps指令来对进程号执行的命令查询
ps aux | grep 720
可以看到pid为720这个进程对应的执行命令为 /lib/systemd/systemd-resolved
所以得出:53端口号所执行的命令为/lib/systemd/systemd-resolved
在Linux下如何排除CPU占用过高的进程
通过top指令查看cpu的占用情况
结束进程的指令 kill -SIGTERM <PID> (进程间通信之一 信号)
如果是自己写的程序cpu占用特别高,进行优化
通过性能分析工具进行分析,如gprof
进行代码审查:无限循环(栈),频繁内存操作
并行操作;减少I/O操作;死锁问题;内存管理(线程池)
实际使用gprof进行排查自己程序的问题
1. 编译程序进行性能分析,加上-pg开启性能分析
gcc -pg -o example example.c
2. 运行程序,会生成对应的gmon.out分析数据文件
./example
3. 使用gprof进行性能分析
生成一个名为 analysis.txt 的文本文件,其中包含了性能分析报告
gprof example gmon.out > analysis.txt
对 analysis.txt文件进行分析
flat profile 和 call graph两个部分
flat profile是每个函数所消耗的时间
可以看出compute函数占用大部分时间
call graph是函数之间的调用关系及时间开销
如果cpu100%进行排查
Linux下通过三个指令可以帮助查找问题top, ps, netstat
简单介绍,top是看cpu和内存使用情况,ps看当前进程,netstat看端口监听情况
top指令
内存,cpu使用率高的进程,用来监控系统资源和排查资源瓶颈
P:按 CPU 使用率排序;M:按内存使用量排序
ps指令
查看进程的运行情况,和进程的PID,运行时间和占用的虚拟内存
netstat命令
用来查看网络连接情况,端口占用情况