共计 5365 个字符,预计需要花费 14 分钟才能阅读完成。
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] [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)