linux系统检测可能会使用到的命令汇总
1.uptime命令
uptime命令能够打印系统总共运行了多长时间以及系统的平均负载。
直接在命令行敲uptime会显示下面数据: 16:19:08 up 114 days, 17:18, 2 users, load average: 0.00, 0.01, 0.05 #16:19:08 是当前服务器的时间 #114 days 是当前服务器运行的时间长度 #2 users 当前的用户数量 #load average: 0.00, 0.01 是当前系统的负载,分别是1 5 15分钟的均值
2.top命令
2.1 top显示出来各个参数的含义
第一行的内容所代表的含义如下: #16:37:02 系统的时间 # 114 days 系统已运行多长时间 # 2 users 当前的用户 # load average: 0.02, 0.02, 0.05 系统负载 第二行的内容所代表的含义如下: #Tasks: 79 total 总的任务进程数 #1 running 运行的进程数 #78 sleeping 休眠的进程数 #0 stopped 停止的进程数 #0 zombie 僵尸进程数 第三行的内容所代表的含义如下: #%Cpu(s) CPU状态信息 #0.7 us (user space)用户空间占用CPU的百分比 #0.7 sy (sysctl)内核空间占用CPU百分比 #0.0 ni 改变过优先级的进程所占用CPU的百分比 #98.7 id 空闲CPU百分比 #0.0 wa IO等待占用CPU百分比 #0.0 hi 硬中断占用CPU百分比 #0.0 si 软中断占用CPU百分比 #0.0 st 第四行的内容所代表的含义如下: #KiB Mem 内存信息 #1882048 total 物理内存的总大小 #104160 free 空闲内存的大小 #544756 used 使用的内存的大小 #1233132 buff/cache 用做内核缓存的内存大小 第五行的内容所代表的含义如下: #KiB Swap swap内存信息 #0 total 交换分区的总大小 #0 free 空闲的交换分区大小 #0 used 使用的交换分区大小 #1164664 avail Mem 代表可以使用于下一次分配的物理内存数量
这一行是进程相关的一些信息,这里显示的只是一部分,剩余的部分可以按f建进入去选择,下面会列出所有的有关参数所代表的含义: PID 进程的ID USER 进程所有者的用户名 PR 优先级 NI nice值。负值表示高优先级,正值表示低优先级 VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR 共享内存大小,单位kb S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 %CPU 上次更新到现在的CPU时间占用百分比 %MEM 进程使用的物理内存百分比 TIME+ 进程使用的CPU时间总计,单位1/100秒 COMMAND 命令名/命令行
PS:下面是未显示出来的: PPID 父进程id UID 进程所有者的用户id RUSER Real User Name GROUP 进程所有者的组名 TTY 启动进程的终端名。不是从终端启动的进程则显示为 ? P 最后使用的CPU,仅在多CPU环境下有意义 SWAP 进程使用的虚拟内存中,被换出的大小,单位kb. CODE 可执行代码占用的物理内存大小,单位kb DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb nFLT 页面错误次数 nDRT 最后一次写入到现在,被修改过的页面数。 nTH 线程数量 WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名 Flags 任务标志 ENVIRON 环境变量
2.2 top使用的一些参数项
top使用格式: top -[d] | [p] | [q] | [c] | [S] | [s] | [n] 参数的含义如下: d: 指定没两次屏幕信息刷新之间的时间间隔。 p:通过指定某个监控项的进程ID来仅监控某个进程的状态。 q:该选项将使top没有任何延迟的进行刷新。 S:指定类继模式 s:使用top在安全模式下运行。 i:使用top不显示任何闲置或者僵尸进程 c:显示整个命令行而不是命令名。 PS:下面使直接使用top后会用到的命令: f或者F:从当前显示中添加或者删除项目。 o或者O:改变显示项目的顺序 l:切换显示平均负载和启动时间信息。 m:切换显示内存信息。 t:切换显示进程和CPU状态信息。 c:切换显示命令名称和完整命令行。 M:根据驻留内存大小进行排序。 P:根据CPU使用百分比大小进行排序。 T:根据时间/累计时间进行排序。 W:将当前设置写入~/.toprc文件中。
2.3 top视图
直接使用top进入基本视图,在基本视图中按1可以监控每个逻辑CPU的概况。
敲击键盘“b”(打开/关闭加亮效果)这时使视图2,具体效果如下:
这里会把运行的进程进行加亮,也可以敲击y来打开或者关闭运行状态进程的加亮效果。
敲击键盘‘x’(打开/关闭排序列的加亮效果),top视图变换如下:
可以看到现在是按"%CPU"进行排序的,可以按”shift+>”或者”shift+<”左右改变排序序列.
在top基本视图中,敲击”f”进入另一个视图,在这里可以编辑基本视图中的显示字段:
用上下键选择选项,按下空格键可以决定是否在基本视图中显示这个选项。
3.iostat命令
iostat是IO statistics(输入/输出统计)的缩写,iostat工具会对系统的磁盘活动进行监控。它的特点是汇报磁盘活动的统计情况,同时也会汇报出CPU使用的情况。但是iostat不能对单个进程做深入的分析,仅能够对系统的整体情况进行分析。
iostat的安装: yum install sysstat
如果直接在命令行敲击iostat的话可以看到所有设备的信息,如下图所示:
上面的图中所显示的一些信息的具体含义如下: 第一行显示的是系统的一些基本信息 下面这行是CPU的属性值相关的说明: %user:CPU处在用户模式下的时间百分比。 %nice:CPU处在带NICE值的用户模式下的时间百分比。 %system:CPU处在系统模式下的时间百分比。 %iowait:CPU等待输入输出完成时间的百分比。 %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。 %idle:CPU空闲时间百分比。 PS:注意 1.如果%iowait的值比较高,可能表示硬盘存在IO瓶颈 2.如果%idle的值比较高,表示CPU目前比较空闲 3.如果%idle的值很高,但是系统的响应比较慢,可能是CPU在等待分配内存,这时可以考虑加大内存的容量 4.如果%idle的值持续低于10,那么可能是CPU的处理能力相对比较低下,系统中最需要解决的资源是CPU 在下面那行是磁盘相关的属性信息: tps:该设备每秒的传输次数 kB_read/s:每秒从设备(drive expressed)读取的数据量; kB_wrtn/s:每秒向设备(drive expressed)写入的数据量; kB_read:读取的总数据量; kB_wrtn:写入的总数量数据量;
用法:iostat [选项] [<时间间隔>] [<次数>] 参数: -c: 显示CPU使用情况 -d: 显示磁盘使用情况 -N: 显示磁盘阵列(LVM) 信息 -n: 显示NFS 使用情况 -k: 以 KB 为单位显示 -m: 以 M 为单位显示 -t: 报告每秒向终端读取和写入的字符数和CPU的信息 -V: 显示版本信息 -x: 显示详细信息 -p:[磁盘] 显示磁盘和分区的情况 下面是可能会用到的一些简单的命令: #定时显示所有的信息,每隔2秒刷新显示3次 iostat 2 3 #指定磁盘的信息 iostat -d /dev/vda #显示tty和cpu的信息 iostat -t #以M为单位显示所有的信息 iostat -m #查看TPS和吞吐量信息 iostat -d -k 1 1 #查看设备使用率(%util)、响应时间(await) iostat -d -x -k 1 1
下面是查看设备使用率响应时间的图:
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s r/s: 每秒完成的读 I/O 设备次数。即 rio/s w/s: 每秒完成的写 I/O 设备次数。即 wio/s rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。 wkB/s: 每秒写K字节数。是 wsect/s 的一半。 avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。 avgqu-sz: 平均I/O队列长度。 rsec/s: 每秒读扇区数。即 rsect/s wsec/s: 每秒写扇区数。即 wsect/s r_await:每个读操作平均所需的时间,不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间。 w_await:每个写操作平均所需的时间,不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间。 await: 平均每次设备I/O操作的等待时间 (毫秒)。 svctm: 平均每次设备I/O操作的服务时间 (毫秒)。 %util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比。
如果%util接近100%,说明产生的IO青丘数量太多了,IO系统已经负载了,该磁盘可能存在瓶颈。
如果svctm比较接近await,说明IO几乎没有等待时间。
如果await远大于svctm,说明IO队列太长了,IO响应太慢,需要进行必要的优化。
如果avgqu-sz比较大,也说明有一定量的IO在等待。
4.vmstat命令
vmstat可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存的使用,虚拟内存交换的情况,IO读写情况。总结来说就是用来获取有关进程、虚存、页面交换空间以及CPU活动信息,我们可以使用这些信息来观察系统负载的情况。
#vmstat的用法 vmstat [-a] [-n] [-S unit] [delay [ count]] vmstat [-s] [-n] [-S unit] vmstat [-m] [-n] [delay [ count]] vmstat [-d] [-n] [delay [ count]] vmstat [-p disk partition] [-n] [delay [ count]] vmstat [-f] vmstat [-V] -a:显示活跃和非活跃内存 -f:显示从系统启动至今的fork数量 -m:显示slabinfo -n:只在开始时显示一次各字段的名称 -s:显示内存相关统计信息及多种系统活动数量。 delay:刷新时间间隔。如果不指定,只显示一条结果。 count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。 -d:显示磁盘相关统计信息。 -p:显示指定磁盘分区统计信息 -S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes) -V:显示vmstat版本信息。
如果直接在命令行敲击vmstat会出现如下图所示的数据:
#procs下面的参数含义如下: r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。 b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。 #memory下面的参数含义如下: swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常 free 当前的空闲页面列表中内存数量(k表示) buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。 cache 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。 #swap下面的参数含义如下: si 由内存进入内存交换区数量。 so 由内存交换区进入内存数量。 #io下面的参数含义如下: bi 从块设备读入数据的总量(读磁盘)(每秒kb)。 bo 块设备写入数据的总量(写磁盘)(每秒kb)。 PS:这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。 #system下面的参数含义如下: 显示采集间隔内发生的中断数 in 列表示在某一时间间隔中观测到的每秒设备中断数。 cs 列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。 #cpu下面的参数含义如下: us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。 sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。 wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。 id 列显示了cpu处在空闲状态的时间百分比
5.iotop命令
iotop命令可以用来监控磁盘IO的状况。与top的UI类似。
-o:只显示有io操作的进程 -b:批量显示,无交互,主要用作记录到文件。 -n NUM:显示NUM次,主要用于非交互式模式。 -d SEC:间隔SEC秒显示一次。 -p PID:监控的进程pid。 -u USER:监控的进程用户。
Total DISK READ/Total DISK WRITE 一方面表示了进程和内核线程之间的总的读写带宽,另一方面也表示内核块设备子系统的。 Actual DISK READ/Actual DISK WRITE 表示在内核块设备子系统和下面硬件(HDD、SSD 等等)对应的实际磁盘 I/O 带宽。
TID 线程号或进程号
PRIO 线程运行时的I/O优先级
USER 进程所属用户
DISK READ 刷新时间间隔内读取数据量
DISK WRITE 刷新时间间隔内写入数据量
SWAPIN 每个进程的交换使用率
IO 每个进程的 I/O 利用率,包含磁盘和交换
COMMAND 进程名字