常用的Linux性能监测命令行工具

 常用的Linux性能监测命令行工具

老wu最近在用全志的H5 SoC开发板做本地的源码编译测试,源码包比较复杂,编译的过程需要 bundle install 很多相关的依赖包,需要好几个小时才能完成,期间的等待是让人很焦虑的,安装进度长时间没有更新,是bundle网络连接卡住了?还是内存不足无法继续编译了?(开发板仅有1GB的内存空间)亦或者全志H5过热死机了?(全志H5的发热量确实有点儿大)

总不能瞎等吧,我们熟悉的Windows系统,提供了方便的任务管理器工具,可以实时查看进程的CPU负载率,内存使用率和网络数据包的收发情况,我们可以判断编译进程有没有挂掉,或者下载依赖包的网络连接速度。

当然,作为Linux系统,像任务管理器这类的工具肯定是不会缺的,甚至更好用。老wu这里推荐一些常用的Linux性能监测工具,在我们运行长时间的任务时,运行Linux性能监测工具,实时查看任务的运行状态。

TOP
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

  • 第一行
    • 09:14:56 : 系统当前时间
    • 264 days, 20:56 : 系统开机到现在经过了多少时间
    • 1 users : 当前2用户在线
    • load average: 0.02, 0.04, 0.00: 系统1分钟、5分钟、15分钟的CPU负载信息
  • 第二行
    • Tasks:任务;
    • 87 total:很好理解,就是当前有87个任务,也就是87个进程。
    • 1 running:1个进程正在运行
    • 86 sleeping:86个进程睡眠
    • 0 stopped:停止的进程数
    • 0 zombie:僵死的进程数
  • 第三行
    • Cpu(s):表示这一行显示CPU总体信息
    • 0.0%us:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。
    • 0.7%sy:内核占用CPU时间百分比
    • 0.0%ni:改变过优先级的进程占用CPU的百分比
    • 99.3%id:空闲CPU时间百分比
    • 0.0%wa:等待I/O的CPU时间百分比
    • 0.0%hi:CPU硬中断时间百分比
    • 0.0%si:CPU软中断时间百分比
    • 注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1;
  • 第四行
    • Men:内存的意思
    • 8175320kk total:物理内存总量
    • 8058868k used:使用的物理内存量
    • 116452k free:空闲的物理内存量
    • 283084k buffers:用作内核缓存的物理内存量
  • 第五行
    • Swap:交换空间
    • 6881272k total:交换区总量
    • 4010444k used:使用的交换区量
    • 2870828k free:空闲的交换区量
    • 4336992k cached:缓冲交换区总量
  • 进程信息
    • 再下面就是进程信息:
    • PID:进程的ID
    • USER:进程所有者
    • PR:进程的优先级别,越小越优先被执行
    • NInice:值
    • VIRT:进程占用的虚拟内存
    • RES:进程占用的物理内存
    • SHR:进程使用的共享内存
    • S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
    • %CPU:进程占用CPU的使用率
    • %MEM:进程使用的物理内存和总内存的百分比
    • TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
    • COMMAND:进程启动命令名称

下面列出一些常用的 top命令操作指令

  • q:退出top命令
  • <Space>:立即刷新
  • s:设置刷新时间间隔
  • c:显示命令完全模式
  • t::显示或隐藏进程和CPU状态信息
  • m:显示或隐藏内存状态信息
  • l:显示或隐藏uptime信息
  • f:增加或减少进程显示标志
  • S:累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+
  • P:按%CPU使用率排行
  • T:按MITE+排行
  • M:按%MEM排行
  • u:指定显示用户进程
  • r:修改进程renice值
  • kkill:进程
  • i:只显示正在运行的进程
  • W:保存对top的设置到文件^/.toprc,下次启动将自动调用toprc文件的设置。
  • h:帮助命令。
  • q:退出

注:强调一下,使用频率最高的是P、T、M,因为通常使用top,我们就想看看是哪些进程最耗cpu资源、占用的内存最多; 注:通过”shift + >”或”shift + <”可以向右或左改变排序列 如果只需要查看内存:可用free命令。只查看uptime信息(第一行),可用uptime命令;
top命令的增强版htop
htop 是一个 Linux 下的交互式的进程浏览器,可以用来替换Linux下的top命令。
与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。
与top相比,htop有以下优点:

  • 可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行。
  • 在启动上,比top 更快。
  • 杀进程时不需要输入进程号。
  • htop 支持鼠标操作。

nethogs
对于需要在编译过程中下载依赖包的情形来说,我们需要了解当前的网络流量的情况,如果网络流量一直只有几KB,那下载源肯定被墙了或者失效了,得重新修改依赖包的源或者VPN链接,不能瞎等,要了解linux当前网络的链接流量信息,nethogs这个工具就派上用场了。

NetHogs是一个开源的命令行工具(类似于Linux的top命令),用来按进程或程序实时统计网络带宽使用率。

NetHogs的用法

sudo nethogs

NetHogs 命令行参数
用-d来添加刷新频率参数,device name 用来检测给定的某个或者某些设备的带宽(默认是eth0)。

sudo nethogs -d 5 // 这样表示设置5秒钟的刷新频率
sudo nethogs eth0 // 这样表示只用监视设备(eth0 以太网卡0)的网络带宽

如果要同时监视以太网卡 eth0和 WIFI wlan0 接口,使用以下命令即可:

sudo nethogs eth0 wlan0

NetHogs 其他参数和用法

  • -d : 刷新间隔
  • -h : 帮助
  • -p : promiscious 模式
  • -t : trace模式
  • -V : 版本

当然,NetHogs也支持交互命令(键盘快捷键)

  • m : 修改单位
  • r : 按流量排序
  • s : 按发送流量排序
  • q : 退出命令提示符

当然,我们可以更具体一点,查看网络连接了哪个域名,每个链接的流行情况,可以用命令:
iftop
iftop是类似于top的实时流量监控工具,可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。
1、iftop界面相关说明
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>这两个左右箭头,表示的是流量的方向。

  • TX:发送流量
  • RX:接收流量
  • TOTAL:总流量
  • Cumm:运行iftop到目前时间的总流量
  • peak:流量峰值
  • rates:分别表示过去 2s 10s 40s 的平均流量

2、iftop相关参数
常用的参数

  • -i 设定监测的网卡,如:# iftop -i eth1
  • -B 以bytes为单位显示流量(默认是bits),如:# iftop -B
  • -n 使host信息默认直接都显示IP,如:# iftop -n
  • -N 使端口信息默认直接都显示端口号,如: # iftop -N
  • -F 显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
  • -h(display this message),帮助,显示参数信息
  • -p 使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
  • -b 使流量图形条默认就显示;
  • -f 这个暂时还不太会用,过滤计算包用的;
  • -P 使host信息及端口信息默认就都显示;
  • -m 设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

进入iftop画面后的一些交互操作快捷键(注意大小写)

  • 按h切换是否显示帮助;
  • 按n切换显示本机的IP或主机名;
  • 按s切换是否显示本机的host信息;
  • 按d切换是否显示远端目标主机的host信息;
  • 按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
  • 按N切换显示端口号或端口服务名称;
  • 按S切换是否显示本机的端口信息;
  • 按D切换是否显示远端目标主机的端口信息;
  • 按p切换是否显示端口信息;
  • 按P切换暂停/继续显示;
  • 按b切换是否显示平均流量图形条;
  • 按B切换计算2秒或10秒或40秒内的平均流量;
  • 按T切换是否显示每个连接的总流量;
  • 按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
  • 按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
  • 按j或按k可以向上或向下滚动屏幕显示的连接记录;
  • 按1或2或3可以根据右侧显示的三列流量数据进行排序;
  • 按<根据左边的本机名或IP排序; 按>根据远端目标主机的主机名或IP排序;
  • 按o切换是否固定只显示当前的连接;
  • 按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
  • 按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
  • 按q退出监控。

 

吴川斌

吴川斌