第十章 Linux日常运维管理
10.1 查看系统负载
w命令
w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
- 查看系统负载(w)
[root@adai003 ~]# w
11:17:30 up 13 min, 2 users, load average: 0.00, 0.04, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 11:04 13:06 0.05s 0.05s -bash
root pts/0 192.168.8.1 11:05 2.00s 0.02s 0.00s w
解析: 第一行从左边开始显示的信息依次是:时间,系统运行时间,登录用户数,平均负载(1min平均负载、5min平均负载、15min平均负载)。
load average:平均负载,即单位时间内CPU活动进程数,这个值越大说明服务器压力越大,一般该值不超过cpu数量就可以。
- 查看服务器CPU数量(/proc/cpuinfo)
[root@adai003 ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 58
model name : Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
stepping : 9
microcode : 0x12
cpu MHz : 2493.938
cache size : 3072 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dtherm fsgsbase smep xsaveopt
bogomips : 4988.79
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
说明: 在此,professor即为系统CPU数量。
uptime命令
uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
[root@adai003 ~]# uptime
17:22:58 up 6:18, 2 users, load average: 0.00, 0.01, 0.05
注: uptime得到的信息和w第一行结果是一样的。
tty解析
TTY设备包括虚拟控制台,串口以及伪终端设备。
在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:
-
串行端口
串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。这些串行端口所对应的设备名称是: /dev/tts/0(或/dev/ttyS0),/dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0),(4,1)等,分别对应于DOS系统下的COM1、COM2等。 -
伪终端
伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备,对master的操作会反映到slave上)。 -
控制终端
如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。 -
控制台
在Linux 系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上(这时也叫控制台终端)。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。/dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接输出到控制台上。只有在单用户模式下,才允许用户登录控制台。 -
虚拟终端
在Xwindow模式下的伪终端.如在Kubuntu下用konsole,就是用的虚拟终端,用tty命令可看到/dev/pts/name, name为当前用户名。
10.2 vmstat命令
vmstat命令的含义为显示虚拟内存状态(“Viryual Memor Statics”),它可以报告关于进程、内存、I/O等系统整体运行状态。
vmwstat用法
语法:
- vmstat
意思是静态显示内存状态一次。
[root@adai003 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 755756 876 138904 0 0 3 0 26 40 0 0 100 0 0
- vmstat [n] 在此n代表数字
意思是以n秒每次的频率动态显示内存状态(按Ctrl+c结束命令)。
[root@adai003 ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 755756 876 138936 0 0 3 0 26 40 0 0 100 0 0
0 0 0 755740 876 138936 0 0 0 0 29 41 0 0 100 0 0
0 0 0 755740 876 138936 0 0 0 0 25 30 0 0 100 0 0
0 0 0 755740 876 138936 0 0 0 0 30 39 0 1 99 0 0
0 0 0 755740 876 138936 0 0 0 0 24 34 0 0 100 0 0
^C
- vmstat [n] [m]
意思是每n秒显示一次,显示m次后命令结束!
[root@adai003 ~]# 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
2 0 0 755756 876 138936 0 0 3 0 26 40 0 0 100 0 0
0 0 0 755616 876 138936 0 0 0 0 31 42 0 0 100 0 0
0 0 0 755616 876 138936 0 0 0 0 34 45 0 0 100 0 0
[root@adai003 ~]#
说明:
- proc 显示进程相关信息
- r:=run,表示运行中或等待cpu运行的进程数,如果该数长期大于服务器CPU个数,则说明CPU不够用了。
- b:表示等待资源的进程数,如,等待I/O,内存等,这列的值如果长时间大于1,则需要关注一下。
- memory 内存相关信息
- swpd:表示切换到交换分区的内存量(当该数据不断变化时说明内存不足)
- free:表示当前空闲的内存量
- buff:缓冲大小
- cache:缓存大小
- swap 内存交换情况
- si:=storage in,表示交换区写入到内存的数据量
- so:=storage out,表示由内存写入到交换区的数据量
- io 磁盘使用情况
- bi:=block in,表示从块设备读取数据(写入内存)的量(即:读磁盘)
- bo:=block out,表示(从内存读取)写入到块设备的数据(即:写磁盘)
注: 此处数据会直接关系到proc出的b的值。
- system 显示采集间隔内发生的中断次数
- in:表示在某一时间间隔中观测到的每秒设备中断数
- cs:表示每秒产生的上下文切换次数
- CPU 显示CPU的使用状态(us+sy+id=100%)
- us:表示用户资源所花费CPU的百分比(当该值长时间>50时说明CPU数量不足)
- sy:表示系统资源所花费CPU的百分比
- id:表示CPU处于空闲状态的百分比
- wa:=wait,表示等待使用CPU的百分比(该数值大说明CPU不足)
- st:表示被偷走的CPU所占百分比(该值一般为0,不用关注)
10.3 top命令
top命令可以实时动态地(每3秒变一次)查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。其特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放在最前面,以确认是哪个进程占用内存。
top用法
语法: top [options]
Options:
-b:批量处理模式
-c:显示详细进程信息
-bn1:静态显示所有进程(该法多用于shell脚本)
[root@adai003 ~]# top
top - 23:28:08 up 12:24, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 84 total, 1 running, 83 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1008392 total, 754160 free, 113712 used, 140520 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 740452 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
490 root 20 0 302840 6340 4780 S 0.3 0.6 1:42.80 vmtoolsd
1 root 20 0 125048 3560 2400 S 0.0 0.4 0:02.13 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.21 ksoftirqd/0
6 root 20 0 0 0 0 S 0.0 0.0 0:01.39 kworker/u128:0
……
注: 在top状态下(按q退出),按shift+m可以按内存使用大小进行排序(默认以CPU使用占比排序),按shift+p恢复按CPU使用占比排序,,按数字1可以显示每个CPU的状态。
说明:
- 第一行是负载信息
- 第二行是进程信息
- 第三行是CPU使用信息
- 第四行是内存使用信息
- 第五行是交换区使用信息
- 最下面是进程详细信息:
- PID:表示进程在系统中的id号,可配合kill命令结束某进程
- RES:表示进程所用物理内存大小(单位:KB)
- %MEM:表示内存使用百分比(单位:KB)
10.4 sar命令
sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态(如,平均负载,网卡流量,磁盘状态,内存使用等)计数器显示到标准输出设备。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示从零点开始到当前时刻的系统状态信息。
sar用法
使用‘yum install -y sysstat’安装该命令!初次使用sar命令(不加选项、参数)会报错,原因是sar命令还没有生成相应的数据库文件。其数据库保存在‘/var/log/sa/’目录下,该目录下存放两种文件,分别以‘sa日期’&‘sar日期’的格式命名(区别是sar文件在第二天生成,可以使用cat命令查看;sa文件实时<每个整‘10’分钟更新一次>生成,是二进制文件,无法查看),最多保留一个月。
语法: sar [options] [参数]
Options:
-f:从指定文件提取报告
- sar -n DEV m n 查看网卡流量(在此m、n的用法同vmstat命令!)
[root@adai003 ~]# sar -n DEV 1 2
Linux 3.10.0-514.el7.x86_64 (adai003) 2017年07月11日 _x86_64_ (1 CPU)
00时13分32秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
00时13分33秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00时13分33秒 ens33 1.02 1.02 0.06 0.19 0.00 0.00 0.00
00时13分33秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
00时13分34秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00时13分34秒 ens33 1.98 1.98 0.12 0.45 0.00 0.00 0.00
平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: ens33 1.51 1.51 0.09 0.32 0.00 0.00 0.00
说明:
-
rxpck/s:表示接收数据(包)的个数
-
txpck/s:表示发送数据(包)的个数
-
rxKB/s:表示接收的数据量
-
txKB/s:表示发送的数据量
注: 当rxpck/s的值大于4000或者rxKB/s的值大于5000时则可能是在被攻击(需配合抓包工具进一步确认)! -
sar -q 查看系统负载(配合-f选项使用,查看历史负载)
[root@adai003 ~]# sar -q -f
Linux 3.10.0-514.el7.x86_64 (adai003) 2017年07月11日 _x86_64_ (1 CPU)
00时10分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
00时20分01秒 1 101 0.00 0.01 0.05 0
00时30分01秒 2 102 0.00 0.01 0.05 0
平均时间: 2 102 0.00 0.01 0.05 0
- sar -b 查看磁盘信息
[root@adai003 ~]# sar -b 1 3
Linux 3.10.0-514.el7.x86_64 (adai003) 2017年07月11日 _x86_64_ (1 CPU)
00时36分28秒 tps rtps wtps bread/s bwrtn/s
00时36分29秒 0.00 0.00 0.00 0.00 0.00
00时36分30秒 0.00 0.00 0.00 0.00 0.00
00时36分31秒 0.00 0.00 0.00 0.00 0.00
平均时间: 0.00 0.00 0.00 0.00 0.00
10.5 nload命令
使用前需要先安装该命令:
[root@adai003 ~]# yum install -y nload
注: 在安装此包前需要先安装yum扩展源:epel-release。
用法
[root@adai003 ~]# nload
注: 在该界面显示系统网络动态信息,可使用方向键在不同网卡之间进行切换,按q键退出,根据实时网速和总网速的比较可以评估网络状态!