linux常用性能分析命令学习
1. lsof
功能:可以列出某个进程打开的所有文件信息
用途:查看进程打开的普通文件,目录,nfs文件,块文件,字符文件,共享库,管道,符号链接,socket流,网络socket等
举例:
—— 不带任何参数运行lsof会列出所有进程打开的所有文件
—— lsof /temp/access_log 列出哪些进程使用某些文件
—— lsof -c httpd;lsof -p PID 查找某个程序打开的所有文件
—— lsof -i :port 查看使用某个端口的进程
—— lsof -d mem 列出所有内存映射文件
—— lsof -d txt 列出所有加在内存中并正在执行的进程
2. vmstat
功能:显示系统整体负载情况
用途:性能分析
wmstat 1 每1秒刷新一下结果
结果参数解释
-r 正在运行的进程数,如果这个数字大于机器的cpu数,说明会有比较多的时间消耗在进程切换上
-b 消耗在io等待的进程数,如果有如果有比较多进程数,说明很多进程卡在io这里。
-swpd 系统交换分区大小,希望不变,如果变化说明有内存和硬盘交互,会有比较大开销。
-free 当前可以分配的内存大小。
-buff 针对块设备的缓存,系统级别使用的
-cache 针对文件系统的缓存,系统级别使用的
-si 用到交换分区的时候,从硬盘换入到内存,越小越好
-so 用到交换分区的时候,从内存换出到硬盘,越小越好
-bi 从硬盘读,与io繁忙程度相关
-bo 写到硬盘,与io繁忙程度相关
-in 产生系统调用的次数
-cs 产生系统上下文切换的次数
-us cpu消耗在用户态的时间百分比
-sy cpu消耗在内核态的时间百分比
-id cpu空闲的时间百分比
-wa cpu消耗在io等待上的时间百分比
-st 虚拟机消耗cpu的百分比
cpu区域可以查看进程对cpu的占用和主要消耗在什么地方,swap和memory区域可以查看进程对内存空间使用的情况。
3. iostat
功能:对系统的磁盘活动进行监视
用途:性能分析
通常用法:iostat -x
await ,svctm, util 查看io是否处于比较繁忙的情况
4. netstat
功能:可以查看进程网络使用情况,(1)显示当前网络udp/tcp socket状态(2)接收,发送队列大小(3)udp接收丢包
参数:
-a 显示所有socket,包括正在监听的。(listen也要显示出来,默认只显示establish)
-n 以数字形式显示地址和端口号
-p proto显示proto指定的协议的连接(不加此参数,根据进程pid查找显示不出来)
举例:
——查看进程占用的端口
(1)ps -ef | grep 进程名 或者 jps得到对应的进程id (2) netstat -anp | grep 进程号
(2) 查看一个端口被哪些进程占用了,一般只有一个进程能够占用一个端口
netstat -antu | grep 9901
可以加上tu参数,要不然会多显示其他的unix等信息。
5. top
功能:显示系统各个进程整体负载情况
用途:性能分析
6. free
功能:显示系统内存使用情况
用途:性能分析
free -k, free -m, free -g
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器