top
语法 : top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
描述 : 实时监控系统运行状态,并且可以根据 cpu 及 内存 等进行排序,运行界面如图
界面各数据解释
- 第一行为任务队列信息,与
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 进程总数为 51 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 进程 idUSER 进程所有者PR 进程优先级NI nice值,负值表示高优先级,正值表示低优先级VIRT 进程使用虚拟内存总量,单位 kbRES 进程使用的未被换出的虚拟内存大小,单位 kbSHR 共享内存大小,单位 kbS 进程状态,有这几种状态: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)

界面各数据解释r 运行和等待 cpu 时间片的进程数,如果该值长期大于 cpu 的个数,表示当前服务器 cpu 不足,需要升级 cpu 核数b 等待资源(IO 处理,内存交换)的进程数swpd 切换到内存交换区的内存大小,也就是虚拟内存的大小。如果该值不为 0,或者说比较大的时候,只要后面的si``so这两个值长期为 0 的话,也是正常的。如果si``so长期不为 0,且swpd也长期比较大,证明此时的虚拟内存不太正常,需要观察虚拟内存的使用情况free 当前空闲的物理内存大小buff 缓冲大小cache 缓存大小si 由磁盘调入内存的值so 由内存进入到磁盘的大小bi 块设备读入的数据总量,也就是读磁盘的数据总量,单位是 kb/sbo 写磁盘的数据总量,单位 kb/s,如果bi跟bo值比较大(一般指超过几百/几千),且wa的值也比较大,认为系统磁盘IO存在瓶颈,应该提高磁盘读写性能,或降低程序不必要的磁盘读写频率in 某个时间间隔内观测到的每秒中断数cs 每秒产生的线程上下文切换次数,in``cs值越大表示由内核消耗的cpu时间越多,一般不太常监控us 用户空间占用 cpu 的百分比,监控的时候如果发现us的值长期大于 50%,则需要考虑优化程序/算法,如果长期大于 80%,则已经产生了瓶颈sy 系统内核进程消耗的cpu时间百分比,如果这个值比较大,可能存在较大的上下文切换/磁盘IO等待的情况。一般来说,us 跟 sy 应该小于 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 显示扩展状态
$ iostat -xLinux 3.10.0-1160.el7.x86_64 (stone) 2021年06月09日 _x86_64_ (1 CPU)avg-cpu: %user %nice %system %iowait %steal %idle2.06 0.00 0.54 0.01 0.00 97.38Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsda 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.09dm-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.08dm-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
