Linux 运维管理
一 w 命令, 查看当前系统的负载
用法如下
[root@localhost ~]# w
15:15:19 up 2 min, 1 user, load average: 0.05, 0.08, 0.04
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.72.1 15:14 7.00s 0.08s 0.00s w
第一行从左面开始显示的信息依次为: 时间, 系统运行时间, 登录用户数, 平均负载.
第二行开始以及下面所有的行, 告诉我们: 当前登录的都有哪些用户, 以及他们是从哪里登录的等等. 其实, 在这些信息当中, 我们最应该关注的应该是第一行中的'load average:' 后面的三个数值.
第一个数值表示 1 分钟内系统的平均负载值;
第二个数值表示 5 分钟内系统的平均负载值;
第三个数值表示 15 分钟系统的平均负载值.
我们着重看中第一个值, 它表示单位时间段内 CPU 活动进程数. 当然这个值越大就说明你的服务器压力越大. 一般情况下这个值只要不超过服务器的 cpu 数量就没有关系, 如果服务器 cpu 数量为 8, 那么这个值若小于 8, 就说明当前服务器没有压力, 否则就要关注一下了.
查看 cpu 核心数量, cat /proc/cpuinfo
[root@localhost ~]# cat /proc/cpuinfo
这里的 processor 计数从 0 开始, 也就是说一个显示为 0, 二个显示为 1.
uptime 实时查看
[root@localhost ~]# uptime
15:44:37 up 32 min, 1 user, load average: 0.00, 0.01, 0.05
查看当前系统有几个 cpu, 我们可以使用这个命令: grep -c 'processor' /proc/cpuinfo
[root@localhost ~]# grep -c 'processor' /proc/cpuinfo
2
二 用 vmstat 命令监控系统的状态
用法如下:
vmstat 命令打印的结果共分为 6 部分: procs, memory, swap, io, system, cpu.. 请重点关注一下 r,b,si, so,bi,bo,wa 几列.
#vmstat // 显示当前系统状态
#vmstat 1 // 每隔 1 秒输出一次运行状态, 可以是其他任意数值, ctrl+c 终止
#vmstat 1 5 // 每隔 1 秒输出一次运行状态, 输出 5 次后终止
procs 显示进程的相关信息:
[ ] r (run): 表示运行或等待 CPU 时间片的进程数. 说明: 不要误以为等待 CPU 时间片意味着这个进程没有进行, 实际上某一时刻一个 CPU 只能有一个进程, 其他进程只能排着队等着, 此时这些排队等待 CPU 资源的进程依然是运行状态. 该数值如果长期大于服务器 CPU 的个数, 则说明 CPU 资源不够用了.
[] b (block): 表示等待资源的进程数, 这个资源指的是 I/O, 内存等. 举个例子: 当磁盘读写非常频繁时, 写数据就会非常慢, 此时 CPU 运算很快就结束了, 但进程需要把计算的结果写入磁盘, 这样进程的任务才算完成, 那此时这个进程只能慢慢地等待, 这样这个进程就是这个 b 状态. 该数值如果长时间大于 1, 则需要关注一下.
memory 显示内存的相关信息:
[ ] swpd: 表示切换到交换分区中的内存数量, 单位为 KB.
[ ] free: 表示当前空闲的内存数量, 单位为 KB.
[ ] buff: 表示 (即将写入磁盘的) 缓冲大小, 单位为 KB.
[ ] cache: 表示 (从磁盘中读取的) 缓存大小, 单位为 KB.
swap 显示内存的交换情况:
[ ] si: 表示由交换区写入内存的数据量, 单位为 KB.
[ ] so: 表示由内存写入交换区的数据量, 单位为 KB.
io 显示磁盘的使用情况:
[ ] bi: 表示从块设备读取数据的量(读磁盘), 单位为 KB.
[ ] bo: 表示从块设备写入数据的量(写磁盘), 单位为 KB.
system 显示采集间隔内发生的中断次数:
[ ] in: 表示在某一时间间隔内观测到的每秒设备的中断次数.
[ ] cs: 表示每秒产生的上下文切换次数.
cpu 显示 CPU 的使用状态:
[ ] us: 显示用户下花费 CPU 的时间百分比.
[ ] sy: 显示系统花费 CPU 的时间百分比.
[ ] id: 表示 CPU 处于空闲状态的时间百分比.
us+sy+id =100%
[ ] wa: 表示 I/O 等待所占用 CPU 的时间百分比.
[ ] st: 表示被偷走的 CPU 所占百分比 (一般都为 0, 不用关注)
以上所介绍的各个参数中, 经常会关注 r 列, b 列, 和 wa 列, 三列代表的含义在上边说得已经很清楚. IO 部分的 bi 以及 bo 也是要经常参考的对象. 如果磁盘 io 压力很大时, 这两列的数值会比较高. 另外, 当 si, so 两列的数值比较高, 并且在不断变化时, 说明内存不够了, 内存中的数据频繁交换到交换分区中, 这往往对系统性能影响极大.
三, top 命令显示进程所占系统资源
用法如下:
Top 命令用于动态监控进程所占系统资源, 每隔 3 秒变一次. 这个命令的特点是把占用系统资源 (CPU, 内存, 磁盘 IO 等) 最高的进程放到最前面. top 命令打印出了很多信息, 包括系统负载(loadaverage), 进程数(Tasks),cpu 使用情况, 内存使用情况以及交换分区使用情况.
[ ] %CPU cpu 的使用情况
[ ] %MEM 使用内存的百分比
[ ] RES 进展所占的内存大小, 单位为 Kbyte
输入 top 指令后, 按大写的 M 查看 %MEN, 并以大到小排序;
按大学 P,%CPU 的使用情况, 按照大小顺序排列.
按下数字 1, 产看每个 CPU 的占用情况
按数字 1 切换
top -c 查看详细的进程信息
top -bn1 静态显示所有进程, 表示了非动态打印系统资源的使用情况, 在 shell 脚本中常用.
同时需要关注的是 PID, 可以用 kill 命令杀死该进程.
四 sar 命令监控系统状态
sar 命令很强大, 它可以监控系统所有资源状态, 比如平均负载, 网卡流量, 磁盘状态, 内存使用等等. 它不同于其他系统状态监控工具的地方在于, 它可以打印历史信息, 可以显示当天从零点开始到当前时刻的系统状态信息. 如果你系统没有安装这个命令, 请使用 yum install -y sysstat 命令安装. 初次使用 sar 命令会报错, 那是因为 sar 工具还没有生成相应的数据库文件(时时监控就不会了, 因为不用去查询那个库文件). 它的数据库文件在 "/var/log/sa/" 目录下, 每 10 分钟抓一次, 生成文件保存在该目录下.
1. 查看网卡流量 sar -n DEV
用法如下:
这个命令把党听记录的网卡信息打印出来, 每隔 10 分钟记录一次. 以下参数是重点关注的.
IFACE: 表示设备名称.
rxpck/s: 表示每秒进入收取的包的数量有多少.
txpck/s: 表示每秒发送出云的包的数量有多少.
rxkB/s: 表示每秒收取的数据量(单位为 KB).
txkB/S: 表示每秒发送的数据量
剩下后面几列不需要关注. 如果有一天你所管理的服务器丢包非常严重, 那么你就应该看一看这个网卡流量是否异常了, 如果 rxpck/s 那一列的数值大于 4000, 或者 rxbyt/s 那列大于 5000000 则很有可能是被攻击了, 正常的服务器网卡流量不会高于这么多, 除非是你自己在拷贝数据. 这是你需要实时查看网卡流量
sar -n DEV 1 5 // 每隔 1 秒输出一次网卡流量状态, 5 次后终止
使用 - f 选项查看某一天的网卡流量历史, 后面跟文件名.
但是 / var/log/sa/saXX 只能保存一个月
#sar -n DEV -f /var/log/sa/sa27
2. 查看历史负载 sar -q
这个命令有助于我们查看服务器在过去某个时间的负载状况.
sar -b 查看磁盘负载, 读写情况.
sar -b 1 5 // 每隔 1 秒输出一次磁盘负载状态, 5 次后终止
五, 用 nload 命令查看网卡流量
sar 虽然可以查看网卡流量, 但是不够直观, 还有一个更好用的工具, 那就是 nload.
安装 nload:
[root@localhost ~]# yum install -y nload
ncoming 为进入网卡的流量.
Outgoing 为网卡出去的流量.
主要关注 Curr 那行的数据, 其单位也可以动态自动调整, 很人性化.
按 q 退出该界面.
补充 saXX 和 sarXX,XX 为日期, saXX 是二进制文件, 只能用 sar -f 命令查看, 而 sar 文件是需要一天才能生成的, 可以用 cat 命令查看
25.Linux 系统管理技巧 - w,vmstat,top,sar,nload 命令
来源: http://www.bubuko.com/infodetail-2477574.html