top

语法 : top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
描述 : 实时监控系统运行状态,并且可以根据 cpu内存 等进行排序,运行界面如图
image.png

界面各数据解释

  • 第一行为任务队列信息,与uptime执行结果一样

21:25:49 系统当前时间
up 14:32 系统运行持续时间(这里表示系统运行了14小时32分钟)
2 users 登陆用户数
load average 0.02, 0.05, 0.05 系统的平均负载(什么是平均负载可以参考该文章),后面跟着的 3 个数分别表示最近的1分钟,5分钟,15分钟系统的平均负载量

  • 第二行为任务信息

104 total 进程总数为 5
1 running 2 个执行进程
103 sleeping 103 个休眠进程
0 stopped 0 个 stop 进程
0 zombie 0 个僵尸进程

  • 第三行为 cup 信息

1.4 us 用户空间占用 cpu 的百分比,比如这里是用户占用了 4.8% 的cpu时间
0.7 sy 系统空间占用 cpu 的百分比
0.0 ni 用户空间内改变过优先级的进程占 cpu 的百分比(该数据一般意义不大)
98.0 id 空闲 cpu 占用百分比
0.0 wa IO 等待时间占用 cpu 百分比
0.0 hi 硬件中断占用 cpu 百分比
0.0 si 软件中断占用 cpu 百分比
0.0 st 该数据没啥意义,不讨论

  • 第四行为内存状态信息

995676 total 物理内存总量
70576 free 空闲内存总量
796512 used 使用内存总量
128588 buff/cache 缓冲区内存总量

  • 第五行为交换区内存信息

2097148 total 交换区总量
1042940 free 未使用的交换区总量
1054208 used 使用的交换去总量
62748 avail Mem 貌似是已使用但可用的交换区内存总量(旧版的top这里显示的是交换区缓存总量,新版才是显示 avail Mem,由于目前对我来说作用不是很大,所以没去深究)

  • 最后是进程统计信息

PID 进程 id
USER 进程所有者
PR 进程优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用虚拟内存总量,单位 kb
RES 进程使用的未被换出的虚拟内存大小,单位 kb
SHR 共享内存大小,单位 kb
S 进程状态,有这几种状态:S(sleep)、R(running)、D(不可中断的睡眠状态)、T(stop)、Z(zombie)
%CUP cpu 占用百分比
%Mem 内存占用百分比
TIME+ 进程使用的 cpu 时间总计
COMMAND 进程名称

vmstat

语法 : vmstat [-a] [-n] [-S unit] [delay [count]]
描述 : 全程 visural memory statistics,可以监控操作系统的进程状态、内存、虚拟机内存、磁盘IO、CPU的信息。与top不同的是,vmstat只能监控 summary 信息,不能对单个进程的信息进行展示

-S 使用指定单位显示。参数有 k K m M ,分别代表 1000 1024 1000000 1048576 字节(byte)。默认单位为 K(102 bytes)

image.png
界面各数据解释
r 运行和等待 cpu 时间片的进程数,如果该值长期大于 cpu 的个数,表示当前服务器 cpu 不足,需要升级 cpu 核数
b 等待资源(IO 处理,内存交换)的进程数
swpd 切换到内存交换区的内存大小,也就是虚拟内存的大小。如果该值不为 0,或者说比较大的时候,只要后面的si``so这两个值长期为 0 的话,也是正常的。如果si``so长期不为 0,且swpd也长期比较大,证明此时的虚拟内存不太正常,需要观察虚拟内存的使用情况
free 当前空闲的物理内存大小
buff 缓冲大小
cache 缓存大小
si 由磁盘调入内存的值
so 由内存进入到磁盘的大小
bi 块设备读入的数据总量,也就是读磁盘的数据总量,单位是 kb/s
bo 写磁盘的数据总量,单位 kb/s,如果bibo值比较大(一般指超过几百/几千),且wa的值也比较大,认为系统磁盘IO存在瓶颈,应该提高磁盘读写性能,或降低程序不必要的磁盘读写频率
in 某个时间间隔内观测到的每秒中断数
cs 每秒产生的线程上下文切换次数,in``cs值越大表示由内核消耗的cpu时间越多,一般不太常监控
us 用户空间占用 cpu 的百分比,监控的时候如果发现us的值长期大于 50%,则需要考虑优化程序/算法,如果长期大于 80%,则已经产生了瓶颈
sy 系统内核进程消耗的cpu时间百分比,如果这个值比较大,可能存在较大的上下文切换/磁盘IO等待的情况。一般来说,ussy 应该小于 80%,如果大于 80%,就存在 cpu 的瓶颈
id cpu 处于空闲状态的时间百分比
wa IO等待时间占cpu时间的百分比,该值越高表明IO等待越严重,根据经验,wa 值低于 20% 证明 IO 等待比较正常,如果这个值超过 20%,就认为 IO 等待非常严重。IO 等待可能是磁盘大量随机读写造成的,也有可能是磁盘/磁盘控制器的带宽瓶颈造成的,这时候需要考虑优化
st 该数据没啥意义,不讨论

iostat

语法iostat [选项] [参数]
描述:用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析
选项
-c 仅显示CPU使用情况
-d 仅显示设备利用率
-k 显示状态以千字节每秒为单位,而不使用块每秒
-m 显示状态以兆字节每秒为单位
-p 仅显示块设备和所有被使用的其他分区的状态
-t 显示每个报告产生时的时间
-V 显示版号并退出
-x 显示扩展状态

  1. $ iostat -x
  2. Linux 3.10.0-1160.el7.x86_64 (stone) 20210609 _x86_64_ (1 CPU)
  3. avg-cpu: %user %nice %system %iowait %steal %idle
  4. 2.06 0.00 0.54 0.01 0.00 97.38
  5. Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
  6. sda 0.95 5.94 2.95 2.95 120.49 58.79 60.73 0.00 0.50 0.52 0.48 0.15 0.09
  7. dm-0 0.00 0.00 2.61 3.18 115.25 35.90 52.27 0.00 0.56 0.57 0.55 0.14 0.08
  8. dm-1 0.00 0.00 1.26 5.71 5.09 22.85 8.01 0.00 0.53 0.14 0.61 0.01 0.01

界面各数据解析
rrqm/s 每秒进行读操作的数量
wrqm/s 每秒进行写操作的数量
r/s 每秒完成的读 IO 设备次数
w/s 每秒完成的写 IO 设备次数
rkB/s

free

描述 : 能够监控系统的内存使用状态。其中 total:总计物理内存的大小;Used:已使用多大;Free:可用有多少;shared:多个进程共享的内存总额;buffers/cached:磁盘缓存的大小

-h 使用M做单位

mpstat

语法: mpstat [-P {|ALL}] [interval [cout]]
描述:mpstat 最大特点是:可以查看多核心cpu中每个计算核心的统计数据

-P {|ALL} :表示监控哪个cpu,cpu在[0,cpu个数-1]中取值
interval :相邻的两次采样的间隔时间
cout :采样的次数,count只能和delay一起使用

mpstat 需要注意: 当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均值。从第二行开始,输出为前一个interval时间段的平均信息

mpstat 需要另外安装,系统不默认提供

netstat

描述 : netstat 命令用于显示本机网络链接、运行端口、路由表等信息

-n : 拒绝显示别名,能显示数字的全部转化成数字
-l : 仅列出有在 listen(监听) 的服务状态
-p : 显示建立相关链接的程序名
-t : 仅显示tcp相关选项
-u : 仅显示udp相关选项
-i : 显示自动匹配接口的信息
-c : 每个一个固定时间,执行该netstat命令

常用 netstat -ntlp