第十章 Linux日常运维管理
10.1 查看系统负载
w命令
w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
[root@cham2 ~]# w
14:28:15 up 9:31, 1 user, load average: 0.02, 0.04, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.230.1 14:25 7.00s 0.42s 0.33s w
[root@cham2 ~]# date
2017年 11月 27日 星期一 14:29:57 CST
说明:第一行从左边开始显示的信息依次是:时间,系统运行时间,登录用户数,平均负载(1min平均负载、5min平均负载、15min平均负载)。
load average:平均负载,即单位时间内CPU活动进程数,这个值越大说明服务器压力越大,一般该值不超过cpu数量就可以。
查看服务器CPU数量(cat /proc/cpuinfo)
[root@cham2 ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping : 9
microcode : 0x42
cpu MHz : 2807.818
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
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 ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp fsgsbase smep
bogomips : 5615.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping : 9
microcode : 0x42
cpu MHz : 2807.818
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 22
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 ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp fsgsbase smep
bogomips : 5615.99
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@cham2 ~]# uptime
14:40:13 up 9:43, 1 user, load average: 0.00, 0.01, 0.05
[root@cham2 ~]# w
14:40:22 up 9:43, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.230.1 14:25 6.00s 0.15s 0.02s w
注: uptime得到的信息和w第一行结果是一样的。所以用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等系统整体运行状态。
vmstat用法
语法:
vmstat
意思是静态显示内存状态一次。vmstat 1 5
[root@cham2 ~]# vmstat
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 740108 876 149756 0 0 2 0 15 22 0 0 100 0 0
vmstat [n] 在此n代表数字
意思是以n秒每次的频率动态显示内存状态(按Ctrl+c结束命令)。
vmstat [n] [m]
意思是每n秒显示一次,显示m次后命令结束!
[root@adai003 ~]# vmstat 1 3
[root@cham2 ~]# 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
1 0 0 739900 876 149788 0 0 2 0 15 22 0 0 100 0 0
0 0 0 739900 876 149788 0 0 0 0 92 62 0 0 100 0 0
0 0 0 739900 876 149788 0 0 0 0 24 35 0 0 100 0 0
0 0 0 739900 876 149788 0 0 0 0 70 56 0 0 100 0 0
0 0 0 739900 876 149788 0 0 0 0 27 43 0 0 100 0 0
0 0 0 739900 876 149788 0 0 0 0 39 53 0 0 100 0 0
0 0 0 739900 876 149788 0 0 0 0 41 43 0 0 100 0 0
0 0 0 739900 876 149788 0 0 0 0 77 61 0 1 100 0 0
0 0 0 739900 876 149788 0 0 0 0 25 39 0 0 100 0 0
^C
[root@cham2 ~]# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 739916 876 149788 0 0 2 0 15 22 0 0 100 0 0
0 0 0 739904 876 149788 0 0 0 0 51 50 0 0 100 0 0
0 0 0 739904 876 149788 0 0 0 0 26 39 0 0 100 0 0
0 0 0 739904 876 149788 0 0 0 0 31 42 0 0 100 0 0
0 0 0 739904 876 149788 0 0 0 0 25 37 0 0 100 0 0
说明:
- 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@cham2 ~]# top
top - 15:30:59 up 10:34, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 99 total, 1 running, 98 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1008416 total, 739152 free, 118364 used, 150900 buff/cache
KiB Swap: 3905532 total, 3905532 free, 0 used. 729416 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 125096 3596 2392 S 0.0 0.4 0:02.24 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.04 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:02.57 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:00.15 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:00.44 watchdog/1
12 root rt 0 0 0 0 S 0.0 0.0 0:00.13 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/1
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
20 root 20 0 0 0 0 S 0.0 0.0 0:00.01 khungtaskd
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
22 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
23 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
24 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
25 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
26 root 20 0 0 0 0 S 0.0 0.0 0:15.20 kworker/0:1
32 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
33 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
34 root 39 19 0 0 0 S 0.0 0.0 0:00.15 khugepaged
35 root 20 0 0 0 0 S 0.0 0.0 0:00.00 fsnotify_mark
36 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto
44 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kthrotld
45 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u128:1
46 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kmpath_rdacd
47 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
49 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ipv6_addrconf
68 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 deferwq
100 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kauditd
239 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff
241 root 20 0 0 0 0 S 0.0 0.0 0:00.01 scsi_eh_0
243 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_0
245 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1
246 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_1
247 root 20 0 0 0 0 S 0.0 0.0 0:01.19 kworker/u128:2
250 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ttm_swap
257 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 mpt_poll_0
258 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 mpt/0
265 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_2
266 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_2
288 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 xfsalloc
289 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 xfs_mru_cache
注: 在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@cham2 ~]# yum install -y sysstat 没有sar命令的话需要安装 已加载插件:fastestmirror 已安装: sysstat.x86_64 0:10.1.5-12.el7 作为依赖被安装: lm_sensors-libs.x86_64 0:3.4.0-4.20160601gitf9185e5.el7 完毕! [root@cham2 ~]# sar 无法打开 /var/log/sa/sa27: 没有那个文件或目录 [root@cham2 ~]# ls /var/log/sa sa27 [root@cham2 ~]# date 2017年 11月 27日 星期一 18:40:52 CST [root@cham2 ~]# sar -n DEV 1 10 Linux 3.10.0-514.el7.x86_64 (cham2) 2017年11月27日 _x86_64_ (2 CPU) 18时41分19秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 18时41分20秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18时41分20秒 ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18时41分20秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 18时41分21秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18时41分21秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 18时41分21秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 18时41分22秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18时41分22秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 18时41分22秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 18时41分23秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18时41分23秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 18时41分23秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 18时41分24秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18时41分24秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 18时41分24秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 18时41分25秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18时41分25秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 18时41分25秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 18时41分26秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18时41分26秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 18时41分26秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 18时41分27秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18时41分27秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 18时41分27秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 18时41分28秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18时41分28秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 18时41分28秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 18时41分29秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18时41分29秒 ens33 1.00 1.00 0.06 0.40 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 0.90 0.90 0.05 0.36 0.00 0.00 0.00
说明:
rxpck/s:表示接收数据(包)的个数
txpck/s:表示发送数据(包)的个数
rxKB/s:表示接收的数据量
txKB/s:表示发送的数据量
注: 当rxpck/s的值大于4000或者rxKB/s的值大于5000时则可能是在被攻击(需配合抓包工具进一步确认)!
sar -q 查看系统负载(配合-f选项使用,查看历史负载)
[root@cham2 ~]# sar -n DEV -f /var/log/sa/sa27
Linux 3.10.0-514.el7.x86_64 (cham2) 2017年11月27日 _x86_64_ (2 CPU)
18时40分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
18时50分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
18时50分01秒 ens33 0.25 0.18 0.02 0.03 0.00 0.00 0.00
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: ens33 0.25 0.18 0.02 0.03 0.00 0.00 0.00
sar -b 查看磁盘信息
[root@cham2 ~]# sar -b
Linux 3.10.0-514.el7.x86_64 (cham2) 2017年11月27日 _x86_64_ (2 CPU)
18时40分01秒 tps rtps wtps bread/s bwrtn/s
18时50分01秒 0.05 0.00 0.05 0.00 0.57
平均时间: 0.05 0.00 0.05 0.00 0.57
[root@cham2 ~]# sar -b 1 5
Linux 3.10.0-514.el7.x86_64 (cham2) 2017年11月27日 _x86_64_ (2 CPU)
18时52分24秒 tps rtps wtps bread/s bwrtn/s
18时52分25秒 0.00 0.00 0.00 0.00 0.00
18时52分26秒 0.00 0.00 0.00 0.00 0.00
18时52分27秒 0.00 0.00 0.00 0.00 0.00
18时52分28秒 0.00 0.00 0.00 0.00 0.00
18时52分29秒 0.00 0.00 0.00 0.00 0.00
平均时间: 0.00 0.00 0.00 0.00 0.00
10.5 nload命令
使用前需要先安装该命令:
[root@cham2 ~]# yum install epel-release
已加载插件:fastestmirror
[root@cham2 ~]# yum install -y nload
已加载插件:fastestmirror
注: 在安装此包前需要先安装yum扩展源:epel-release。
用法:nload
注: 在该界面显示系统网络动态信息,可使用方向键在不同网卡之间进行切换,按q键退出,根据实时网速和总网速的比较可以评估网络状态!