Linux系统管理
Linux系统资源监控分析
## vmstat监控工具 - vmstat命令,是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息,是最常见的Linux/Unix监控工具 - 语法: vmstat [-a] [刷新延时 刷新次数] vmstat [选项] - 选项 -a :用 inact/active(活跃与否) 来取代 buff/cache 的内存输出信息。 -fs:-f:显示从启动到目前为止,系统复制(fork)的程序数,此信息是从 /proc/stat 中的 processes 字段中取得的。-s:将从启动到目前为止,由一些事件导致的内存变化情况列表说明。 -S 单位:令输出的数据显示单位,例如用 K/M 取代 bytes 的容量。 -d:列出硬盘有关读写总量的统计表。 -p 分区设备文件名 : 查看硬盘分区的读写情况。 - 实例: ```shell #使用vmstat检测,每隔1秒刷新一次,共刷新3次 vmstat 1 3 procs ——memory—— swap —io system ——cpu—— r b swpd free buff cache si so bi bo in cs us sy id wa st r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 407376 55772 84644 0 0 5 2 9 10 0 0 100 0 0 0 0 0 407368 55772 84644 0 0 0 0 12 10 0 0 100 0 0 0 0 0 407368 55772 84644 0 0 0 0 15 13 0 0 100 0 0 ``` - 该命令输出信息中,各个字段以及含义如表所示:  ## top 性能分析工具 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top命令可以动态显示进程的资源使用情况,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供了实时的对系统处理器的状态监视,它将显示系统中CPU最“敏感”的任务列表,该命令可以按CPU使用、内存使用和执行时间来对任务进行排序,而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。 - 语法:top [选项] - 选项: - -d 指定每两次屏幕信息刷新之间的时间间隔,如希望每秒刷新一次,则使用:top -d 1 - -p 通过指定PID来仅仅监控某个进程的状态 - -S 指定累计模式 - -s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险 - -i 使top不显示任何闲置或者僵死的进程 - -c 显示整个命令行而不只是显示命令名 - 实例 ```shell top //每隔3秒显式所有进程的资源占用情况 top -d 1 //每隔1秒显式所有进程的资源占用情况 top -c //每隔3秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名) top -p 12345 -p 6789//每隔3秒显示pid是12345和pid是6789的两个进程的资源占用情况 top -d 2 -c -p 123456 //每隔2秒显示pid是123456的进程的资源使用情况,并显式该进程启动的命令行参数 ``` - top的交互命令 - **【1】过滤用户:**在top命令显示中,输入u,然后输入用户名,则可以查看相应的用户进程。如按u键,然后输入tiger,按回车则只显示tiger的进程 - **【2】查看各个CPU的使用情况:**在top命令下,输入1,可以看到各个CPU的使用情况 - **【3】隐藏闲置或僵死的进程**:在top命令下,输入i,可以隐藏闲置或僵死的进程,效果跟输入top -i是一样的。 - **【4】切换内存信息的单位:**top命令默认以K为单位显示内存大小,这让人十分抓狂,我们可以通过大写字母E来切换内存信息区域的显示单位。小写字母m可以控制是否显示内存信息。 - **【5】切换进程列表中的内存显示单位:**在进程列表中,内存的单位默认也是KB,我们可以通过小写字母e来切换单位。 - **【6】粗体显示排序的列:**由前文可知,f键可以改变排序的列,但界面中看不出是以哪个列来排序的,可以通过小写字母x来粗体显示当前排序的列 - **【7】快速切换排序的列**:虽然可以通过f键来修改排序的列,但还有一些快速切换排序列的方式:比如大写字母M以%MEM列排序,大写字母N以PID列排序,大写字母P以%CPU列排序,大写字母T以TIME+列排序。大写字母R可以将当前的排序结果反转。 - **【8】显示完整的执行命令:**默认COMMAND列只显示程序的名字,并不包含程序的路径,可以通过小写字母c来显示完整的执行命令(效果跟top -c相同) - top命令的参数含义 ```shell top – 09:36:15 up 86 days, 5:28, 1 users, load average: 0.02, 0.15, 0.22 Tasks: 194 total, 1 running, 126 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.1% hi, 0.0% si Mem: 2070564k total, 1340828k used, 729736k free, 168636k buffers Swap: 4192924k total, 0k used, 4192924k free, 894080k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 1696 544 468 S 0 0.0 0:05.96 init 2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd 3 root RT -5 0 0 0 S 0 0.0 0:00.10 migration/0 4 root 15 -5 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0 5 root RT -5 0 0 0 S 0 0.0 0:00.74 watchdog/0 6 root RT -5 0 0 0 S 0 0.0 0:00.16 migration/1 7 root 15 -5 0 0 0 S 0 0.0 0:00.02 ksoftirqd/1 ``` 上面是执行top显示的的一段内容,可以分为两部分,第一部分是前5行,是系统整体的统计信息。第二部分是第8行开始的进程信息。我们从上往下依次进行说明: - 第一行: - 09:36:15 当前时间 - up 86 days 系统运行了86天 - 1 user 当前登录用户数 - load average:0.02,0.15,0.22 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 - 第二、三行分别为进程和CPU的统计信息: - Tasks:194 total 进程总数 - 1 running 正在运行的进程数 - 126 sleeping 睡眠的进程数 - 0 stopped 停止的进程数 - 0 zombie 僵尸进程数 - Cpu(s): 0.3% us 用户空间占用CPU百分比。 - 进程在用户地址空间中消耗CPU时间的百分比。像shell程序、各种语言的编译器、数据库应用、web服务器和各种桌面应用都算是运行在用户地址空间的进程,这些程序如果不是处于idle状态,那么绝大多数的CPU时间都是运行在用户态。 - 1.0% sy 内核空间占用CPU百分比。 - 进程在内核地址空间中消耗CPU时间的百分比。所有进程要使用的系统资源都是由Linux内核处理的。当处于用户态(用户地址空间)的进程需要使用系统的资源时,比如需要分配一些内存、或是执行IO操作、再或者是去创建一个子进程,此时就会进入内核态(内核地址空间)运行。事实上,决定进程在下一时刻是否会被运行的进程调度程序就运行在内核态。对于操作系统的设计来说,消耗在内核态的时间应该是越少越好,在实践中有一类典型的情况会使sy变大,那就是大量的IO操作,因此在调查IO相关的问题时需要着重关注它。 - 0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比。 - ni是nice的缩写,可以通过nice值调整进程用户态的优先级,这里显示的ni表示调整过nice值的进程消耗掉的CPU时间。如果系统中没有进程被调整过nice值,那么ni就显示为0。 - 98.7% id 空闲CPU百分比 - 0.0% wa 等待输入输出的CPU时间百分比。 - CPU等待磁盘IO操作的时间。和CPU的处理速度相比,磁盘IO操作是非常慢的,有很多这样的操作,比如:CPU在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU只能处于空闲状态。Linux系统在计算系统平均负载时会把CPU等待IO操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过wa来判断系统的性能瓶颈是不是过多的IO操作造成的。 - 0.1% hi 硬中断占用百分比 - 0.0% si 软中断占用百分比 - 解释:这两个值表示系统处理中断消耗的时间。中断分为硬中断和软中断,hi表示处理硬中断消耗的时间,si表示处理软中断消耗的时间。硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)。软中断是由程序发出的中断,最终也会执行相应的处理程序(消耗CPU时间) - 最后两行为内存信息。内容如下: - Mem: 2070564k total 物理内存总量 - 1340828k used 使用的物理内存总量 - 729736k free 空闲的内存总量 - 168636k buffers 用作内核缓存的内存量 - Swap: 4192924k total 交换区内存总量 - 0k used 使用的交换区总量 - 4192924k free 空闲的交换区总量 - 894080k cached 缓冲的交换区总量 - 进程的统计信息 
顶部
收展
底部
[TOC]
目录
Linux进程介绍
Linux进程管理命令
Linux工作管理
Linux任务调度:循环执行定时任务命令crontab
Linux任务调度:定时执行某次任务命令at
Linux任务调度:重新执行错过的定时任务命令anacron
Linux系统资源监控分析
Linux端口查询:netstat和lsof
相关推荐
Linux文件目录管理
Linux打包压缩
Linux文本处理
Linux软件安装
Linux用户和用户组管理
Linux文件系统管理