Linux运维人员在日常工作中经常使用的管理命令,工具等1 查看系统状态1.1 w命令和uptime命令第一行:00:03:40–>当前系统时间up 43 min–>已经启动的时间1 user–>目前登录了几个用户load average:0.00,0.01,0.05–>系统负载,三个数字分别表示1分钟,5分钟,15分钟三个时间段内系统的负载值是多少。跟CPU有关:单位时间内使用CPU活动的进程有多少个。要了解什么时候系统的负载值是多少才是最好的,需要知道系统的逻辑CPU核数是多少。查看系统逻辑CPU核数[root@moli_linux3 ~]# cat /proc/cpuinfo 主要看processor,0代表1颗,1代表2颗,以此类推。我的系统就只有1颗。所以当系统负载值为1的时候是最为理想的。1.2 vmstat命令vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、IO读写、CPU活动等进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。[root@moli_linux3 ~]# vmstat[root@moli_linux3 ~]# vmstat 1 5r: 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。b:表示阻塞的进程。swpd:虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。free:空闲的物理内存的大小buff:Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多Mcache:cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)si:每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。so:每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。bi:块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte。bo:块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。in:每秒CPU的中断次数,包括时间中断cs:每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。us:用户CPU时间。 us的值比较高时,说明用户进程消耗的CPU时间多sy:系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。id:空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。wa:=wait,表示等待使用CPU的百分比(该数值大说明CPU不足)st:表示被偷走的CPU所占百分比(该值一般为0,不用关注)注意:需要关注的是r,b和wa这3列,io部分和bi和bo也是要经常参考的对象,如果磁盘io压力很大,这两列的数值会比较高(大于5千算高)。另外,当si和so两列的数值比较高并且不断变化时,说明内存不够了,内存中的数据频繁交换分区中,这往往对系统性能影响极大。1.3 top命令top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定. [root@moli_linux3 ]# top统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:00:54:48 当前时间up 1:32 系统运行时间,格式为时:分1 user 当前登录用户数load average: 0.01, 0.04, 0.05 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:total 进程总数running 正在运行的进程数sleeping 睡眠的进程数stopped 停止的进程数zombie 僵尸进程数Cpu(s): 0.0% us 用户空间占用CPU百分比0.0% sy 内核空间占用CPU百分比0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比100% id 空闲CPU百分比0.0% wa 等待输入输出的CPU时间百分比0.0%hi:硬件CPU中断占用百分比0.0%si:软中断占用百分比0.0%st:虚拟机占用百分比最后两行为内存信息。内容如下:Mem:999936k total 物理内存总量672308k used 使用的物理内存总量136456 free 空闲内存总量191172k buffers 用作内核缓存的内存量cached 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。Swap: total 交换区总量used 使用的交换区总量 free 空闲交换区总量进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。序号 列名 含义a PID 进程idb PPID 父进程idc RUSER Real user named UID 进程所有者的用户ide USER 进程所有者的用户名f GROUP 进程所有者的组名g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?h PR 优先级i NI nice值。负值表示高优先级,正值表示低优先级j P 最后使用的CPU,仅在多CPU环境下有意义k %CPU 上次更新到现在的CPU时间占用百分比l TIME 进程使用的CPU时间总计,单位秒m TIME+ 进程使用的CPU时间总计,单位1/100秒n %MEM 进程使用的物理内存百分比o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESp SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATAr CODE 可执行代码占用的物理内存大小,单位kbs DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kbt SHR 共享内存大小,单位kbu nFLT 页面错误次数v nDRT 最后一次写入到现在,被修改过的页面数。w S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)x COMMAND 命令名/命令行y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名z Flags 任务标志,参考 sched.h默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。top使用格式top [-] [d] [p] [q] [c] [C] [S] [s] [n]参数说明d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 p 通过指定监控进程ID来仅仅监控某个进程的状态。 q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 S 指定累计模式 s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 i 使top不显示任何闲置或者僵死进程。 c 显示整个命令行而不只是显示命令名 其他实用命令下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。Ctrl+L 擦除并且重写屏幕。 h或者? 显示帮助画面,给出一些简短的命令总结说明。 k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。 i 忽略闲置和僵死进程。这是一个开关式命令。 q 退出程序。 r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。 S 切换到累计模式。 s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。 f或者F 从当前显示中添加或者删除项目。 o或者O 改变显示项目的顺序。 l 切换显示平均负载和启动时间信息。 m 切换显示内存信息。 t 切换显示进程和CPU状态信息。 c 切换显示命令名称和完整命令行。 M 根据驻留内存大小进行排序。 P 根据CPU使用百分比大小进行排序。 T 根据时间/累计时间进行排序。 W 将当前设置写入/.toprc文件中。这是写top配置文件的推荐方法。附常用操作:top //每隔5秒显式所有进程的资源占用情况top -d 2 //每隔2秒显式所有进程的资源占用情况top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数2 查看网卡流量2.1 sar命令 sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。如果当前系统没有按照sar命令的,直接yum安装即可。yum install -y sysstat
执行sar命令后,sar命令每10分钟会把系统的状态读取一遍,以二进制的形式保存在/var/log/sa下,最多保留一个月。sar命令常见使用:监控网卡流量,每隔一秒钟显示一次,显示10次[root@moli-yun ~]# sar -n DEV 1 10第一列是时间第二列网卡名字(本机有两个网卡)第三列rxpck/s:每秒接收到的数据包第四列txpck/s:每秒发送的数据包第五列rxKB/s:每秒接收的数据量第六列txKB/s:每秒发送的数据量后三列不用管。数据包数值得根据服务器的流量决定数值是否正常通常情况下在一般的小企业里,数据包数值在几千以内算正常,如果上万就不是很正常。2.2 noload命令nload 命令用于查看linux网络流量状况,实时输出。可以理解为是一个控制台应用程序,用来实时监测网络流量和带宽使用情况的命令。使用可视化的界面显示流入和留出系统的网络带宽数据。1.linux系统默认没有按照nload,需手动安装[root@moli-yun ~]# yum install -y nload 安装之前,没安装epel扩展源的需要的先安装一下;root@moli-yun ~]# yum install -y epel-release 2.安装完直接执行nload,就会出现一个动态页面,如下图:Device eth0是网卡名称,中括号是ip地址,小括号代表网卡数量,可以使用键盘方向键左右来切换网卡。上半部分是:Incoming也就是进入网卡的流量下半部分是:Outgoing,也就是从这块网卡出去的流量每部分都有当前流量(Curr)平均流量(Avg)最小流量(Min)最大流量(Max)