监视Linux服务器的性能

2019年12月06日 阅读数:179
这篇文章主要向大家介绍监视Linux服务器的性能,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

重要性能监测工具:top、vmstat、w、uptime、ps、free、iostat、netstat、/proc等php

须要监视Linux服务器的性能?大多数Linux发行版都集成了一些监视工具。这些工具能够获取有关系统活动的信息的详细指标。经过这些工具,你能够发现产生系统性能问题可能存在缘由。下面讨论的是一些最基本的命令,它涉及到系统分析和调试服务器等一些问题,如:
1.    找出系统瓶颈问题.
2.    磁盘 (储存) 瓶颈问题.
3.    CPU和内存瓶颈问题.
4.    网络瓶颈问题.
# 1: top – 查看活动进程的命令########################################html

TOP工具可以实时显示系统中各个进程的资源占用情况。默认状况下,它将显示系统中CPU最“敏感”的任务列表.该命令能够按CPU/内存的使用状况和执行时间对任务进行排序,并每五秒钟更新一次。node

wKiom1ZmSIGDxVuKAAAzdkYSpFw715.png

经常使用的快捷键mysql

Top命令为咱们提供了不少有用的快捷键,如:linux

快捷键    用法ios

t           切换显示进程和CPU状态信息。web

m           切换显示进程和CPU状态信息。redis

A           分类显示各类系统资源的消耗状况。可用于快速识别系统的性能要求极高的任务。sql

o           改变显示项目的顺序。apache

r     从新设置进程的优先级别。(系统提示用户输入须要改变的进程PID以及须要设置的优先级值。)

k            终止一个进程。(系统将提示用户输入须要终止的进程PID)

s            改变刷新的时间间隔。

u            查看指定用户的进程。


# 2: vmstat – 系统活动、硬件以及系统信息
这个命令用来报告关于内核线程、虚拟内存、磁盘、陷阱和CPU活动的统计信息。

1
2
3
4
5
6
7
8
9
10
11
# vmstat 3                                                           
输出样例:
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 2540988 522188 5130400    0    0     2    32    4    2  4  1 96  0  0          
1  0      0 2540988 522188 5130400    0    0     0   720 1199  665  1  0 99  0  0          
0  0      0 2540956 522188 5130400    0    0     0     0 1151 1569  4  1 95  0  0          
0  0      0 2540956 522188 5130500    0    0     0     6 1117  439  1  0 99  0  0          
0  0      0 2540940 522188 5130512    0    0     0   536 1189  932  1  0 98  0  0          
0  0      0 2538444 522188 5130588    0    0     0     0 1187 1417  4  1 96  0  0          
0  0      0 2490060 522188 5130640    0    0     0    18 1253 1123  5  1 94  0  0

显示内存使用状况:
# vmstat –m 

# 3: w – 找到已登录的用户而且查看他们作了什么操做
W命令用来显示机器上最近登录的用户信息以及他们的进程信息。

wKioL1ZmSbiAgiptAAARXC22ARE016.png

# 4: uptime – 系统已运行的时间
Uptime命令能够查看系统已经运行了多长时间。截止当前时间日期,系统已经运行了多长时间,当前登陆的用户有哪些,已经在过去的1,5,15分钟,系统的平均负载值状况。

1
2
# uptime                                                             
18:02:41 up 41 days, 23:42,  1 user,  load average: 0.00, 0.00, 0.00

一般被认为是最佳的负载值。系统负载值根据系统的不一样而不一样。对于单CPU的系统,负载值在1-3为正常,SMP的系统,负载值在6-10之间也是能够接受的。

# 5: ps – 显示进程
ps命令用来报告当前进程的快照。要选择全部进程,使用-ef选项:

wKioL1ZmSm6T-YYaAAAtIpxeHpk719.png

只显示lighttpd的进程树:
# pgrep lighttpd                                                  
Or
# pgrep -u vivek php-cgi                                          
显示pid为55977的进程名:

# ps -p 55977 -o comm=   
                                         
找出最耗费内存的前10个进程:

# ps -auxf | sort -nr -k 4 | head -10                             
找出最耗费CPU的前10个进程:

# ps -auxf | sort -nr -k 3 | head -10

# 6: free – 查看内存的使用状况
free指令会显示内存的使用状况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区.

wKioL1ZmSxyw8XcvAAAKlZK6QaI294.png

free的输出一共有四行,第四行为交换区的信息,分别是交换的总量(total),使用量(used)和有多少空闲的交换区(free)。
第二行和第三行是比较让人迷惑的。这两行都是说明内存使用状况的。第一列是总量(total),第二列是使用量(used),第三列是可用量(free)。第一行的输出时从操做系统(OS)来看的。

# 7: iostat – 监视CPU平均负载值,I/O状态
该命令用于报告CPU和输入/输出设备,分区和网络文件系统(NFS)的详细统计数据。

wKiom1ZmS2Xyc14KAAASBH4v89A694.png

基本使用以下:

wKiom1ZmS7XjBcaUAAAetLrPGig481.png

参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。

# 8: mpstat – 实时系统监视工具

mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看全部CPU的平均情况信息,并且可以查看特定CPU的信息。

下面只介绍mpstat与CPU相关的参数,mpstat的语法以下:

Usage: mpstat [ options... ] [ <interval> [ <count> ] ]           

Options are:                                                  

[ -P { <cpu> | ALL } ] [ -V ]                                     

显示每一个进程对CPU的平均利用率:

# mpstat -P ALL

wKiom1ZmTFjguzluAAAawSA15bk972.png

#9: pmap – 查看进程使用内存的状况

pmap命令用来报告进程使用对于的相应内存的状况。使用下面命令能够查出某些内存瓶颈问题的缘由。

# pmap -d PID                           

显示进程号为47394的进程所用内存的信息,最后一行很是重要。

# pmap -d 47394  

wKioL1ZmTbGxyNimAABUv5MOo2Y482.png#11 & #12 : netstat 和 ss – 查看网络状况

netstat命令显示网络链接,路由表,网络接口统计,假装链接,组播成员身份。ss命令相似netstat命令的信息。            

#13: iptraf – 实时网络情况监视工具

iptraf是一款彩色的交互式的IP局域网监控工具。这是一个基于ncurses的IP LAN监视工具,它会统计网络中产生的各类数据,包括TCP信息,UDP链接数,ICMP和OSPF信息,以太网负载信息,节点统计,IP校验和错误,以及其余信息。而且提供:

Network traffic statistics by TCP connection

IP traffic statistics by network interface

Network traffic statistics by protocol

Network traffic statistics by TCP/UDP port and by packet size

Network traffic statistics by Layer2 address

#14: tcpdump – 网络情况分析工具

tcpdump用来抓包的一个的简单命令。可是,要使用该工具,你需熟悉TCP /IP协议。例如:显示网络中有关DNS的信息,请输入:

# tcpdump -i eth1 'udp port 53'     

                                   

显示去往202.54.1.5的全部ftp会话信息:

# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'   


显示去往192.168.1.5的全部HTTP会话信息:

# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'                


使用Wireshark查看tcpdump抓包文件的详细信息,输入:

# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80  

#15: strace – 系统调用工具

strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统呼叫及它所接收的系统信息。strace是一个有用的小工具,它能够经过跟踪系统调用来让你知道一个程序在后台所作的事情。Strace是一个基础的调试工具,在大多数 Linux系 统上默认已经安装;可是即使你不是在跟踪一个问题的时候它也是一个极好的软件。它能告诉你不少关于一个Linux程序怎样工做的信息。

#16: /Proc 文件系统
Linux 内核提供了一种经过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。几个例子:

# cat /proc/cpuinfo                                                

# cat /proc/meminfo                                                

# cat /proc/zoneinfo                   

# cat /proc/mounts  

#17: Nagios – 服务器和网络信息监视工具
Nagios是一款很流行的开源系统和网络监控应用软件。你能够很轻松地用它监控全部的主机,网络设备和服务。在系统或服务状态异常时会第一时间通知网站运维人员(发出邮件或短信报警),在状态恢复正常后发出邮件或短信通知。
#18: Cacti -基于WEB的监视工具
Cacti是经过 snmpget来获取数据,使用 RRDtool绘画图形,并且你彻底能够不须要了解RRDtool复杂的参数。它提供了很是强大的数据和用户管理功能,能够指定每个用户能查看树状结构、host以及任何一张图,还能够与LDAP结合进行用户验证,同时也能本身增长模板,功能很是强大完善。界面友好。CACTI软件Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来做出各式各样的监控图。
#19: KDE System Guard – 图形化的系统监视工具
KDE System Guard (KSysguard)是KDE的任务管理和性能监控工具。它采用client/server架构,能够监控本机也能够监控远端主机。
一篇51CTOblog博文,对KDE System Guard的介绍很详细:http://linuxshow.blog.51cto.com/1572053/371657 

#sar - 收集和报告系统状态信息

使用 sar -d 能够获得当天磁盘活动的状况汇总

sar -n  DEV 则能给出网络接口的统计信息

sar -A 能够报告全部的信息

sar 适用于快速粗略了解历史信息。

sar 命令行的经常使用格式: sar [options] [-o file] t [n]

options 为命令行选项,sar命令的选项不少,下面只列出经常使用选项: 

-A:全部报告的总和。        

-u:CPU利用率        

-v:进程、I节点、文件和锁表状态。        

-d:硬盘使用报告。        

-r:没有使用的内存页面和硬盘块。        

-g:串口I/O的状况。 

-b:缓冲区使用状况。 

-a:文件读写状况。 

-c:系统调用状况。 

-R:进程的活动状况。 

-y:终端设备活动状况。 

-w:系统交换活动。 

能够参考http://linuxtools-rst.readthedocs.org/zh_CN/latest/tool/sar.html 


其余工具:

nmap – 扫描主机的端口开放状况.

lsof - 列出系统当前打开的文件,网络链接以及更多信息。

ntop web based tool – Ntop是一款监控网络流量工具,它显示的网络情况更加直观、详细。Ntop甚至能够列出每一个节点计算机的网络带宽利用率。它是一个灵活的、功能齐全的,用来监控和解决局域网问题的工具;能够自动从网络中识别有用的信息;将截获的数据包转换成易于识别的格式;对网络环境中通讯失败的状况进行分析;探测网络通讯的时间和过程等。

Conky - Conky是x-window下,一款免费的,轻量级系统监控的工具。它可以监控许多系统环境的状态,其中包括的CPU,内存,交换空间,磁盘存储,温度,进程,网络接口,电池电量,系统消息,电子邮件收件箱等。

GKrellM – 它来用于监测CPU状态,内存,硬盘,网络接口,本地和远程邮箱,以及其余的东西等。

vnstat – vnstat是一个基于控制台的网络流量监控软件,它会保持每个月,天天,每小时,监视并记录所选定网络接口的网络通讯情况。

htop – htop是一个加强版本的top,同时也是一个交互式进程查看器,它能够以树状结构来显示进程列表。

mtr – mtr在单一的网络诊断工具上,结合了traceroute和ping程序的功能。






性能监控脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@testredis scripts] # cat performance.sh 
#!/bin/bash
 
#监控cpu系统负载
IP=` ifconfig  eth0 |  grep  "inet addr"  cut  -f 2 -d  ":"  cut  -f 1 -d  " "
cpu_num=` grep  -c  'model name'  /proc/cpuinfo `
count_uptime=`uptime | wc  -w`
load_15=`uptime |  awk  '{print $' $count_uptime '}' `
average_load=` echo  "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a"  bc `  
average_int=` echo  $average_load |  cut  -f 1 -d  "." `  
load_warn=0.70  
if  [ $average_int -gt 0 ]
then
echo  "$IP服务器单个核心15分钟的平均负载为$average_load,超过警惕值1.0,请当即处理!!!$(date +%Y%m%d/%H:%M:%S)"  >> /usr/monitor/performance/performance_ $( date  +%Y%m%d).log
echo  "$IP服务器单个核心15分钟的平均负载为$average_load,超过警惕值1.0,请当即处理!!!$(date +%Y%m%d/%H:%M:%S)"  | mail -s  "$IP服务器系统负载严重告警"  XXXX@qq.com 
else
echo  "$IP服务器单个核心15分钟的平均负载值为$average_load,负载正常   $(date +%Y%m%d/%H:%M:%S)" >> /usr/monitor/performance/performance_ $( date  +%Y%m%d).log
fi
 
#监控cpu使用率
cpu_idle=` top  -b -n 1 |  grep  Cpu |  awk  '{print $5}'  cut  -f 1 -d  "." `  
if  [ $cpu_idle -lt 20 ]
then
 
echo  "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。" >> /usr/monitor/performance/performance_ $( date  +%Y%m%d).log
 
echo  "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理!!!"  | mail -s  "$IP服务器cpu告警"  XXXX@qq.com 
else
 
echo
"$IP服务器cpu剩余$cpu_idle%,使用率正常" >> /usr/monitor/performance/performance_ $( date  +%Y%m%d).log
fi

进程监控

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@testredis scripts] # cat process.sh 
#!/bin/bash
IP=` ifconfig  eth0 |  grep  "inet addr"  cut  -f 2 -d  ":"  cut  -f 1 -d  " " `
 
tomcat_dir= "/opt/apache-tomcat-7.0.8"
mysql_dir= "/usr/local/mysql/bin/mysqld_safe"
vsftp_dir= "/usr/sbin/vsftpd"
ssh_dir= "/usr/sbin/sshd"
 
for  dir  in  $tomcat_dir $mysql_dir $vsftp_dir  $ssh_dir 
do
process_count=$( ps  -ef |  grep  "$dir"  grep  - v  grep  wc  -l)
 
         for  service  in  tomcat mysql vsftp  ssh 
         do
                 echo  "$dir"  | grep  -q  "$service"
                 if  [ $? - eq  0 ]
                 then
                         if  [ $process_count - eq  0 ]
                         then
                             echo  "$service is down at $(date +%Y%m%d%H:%M:%S)"  >> /usr/monitor/process/process_ $( date  +%Y%m%d).log
                             echo  "$service is down at $(date +%Y%m%d%H:%M:%S)"  | mail -s  "$IP服务器 $service服务关闭告警"  XXXX@qq.com 
                         else
                             echo  "$service is running at $(date +%Y%m%d%H:%M:%S)"  >> /usr/monitor/process/process_ $( date  +%Y%m%d).log
                         fi
                 else
                         continue
                 fi
         done
done

流量监控

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
#
R1=` cat  /sys/class/net/eth0/statistics/rx_bytes `
T1=` cat  /sys/class/net/eth0/statistics/tx_bytes `
sleep  1
R2=` cat  /sys/class/net/eth0/statistics/rx_bytes `
T2=` cat  /sys/class/net/eth0/statistics/tx_bytes `
TBPS=` expr  $T2 - $T1`
RBPS=` expr  $R2 - $R1`
TKBPS=` expr  $TBPS / 1024`
RKBPS=` expr  $RBPS / 1024`
echo  "上传速率 eth0: $TKBPS kb/s 下载速率 eth0: $RKBPS kb/s at $(date +%Y%m%d%H:%M:%S)"  >> /usr/monitor/network/network_ $( date  +%Y%m%d).log

流量分析统计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@testredis scripts] # cat tongji.sh 
#!/bin/bash
TX=0;
RX=0;
MAX_TX=0;
MAX_RX=0;
while  read  line
do
         a=` echo  $line |  grep  "eth0"  | awk  '{print $3}' `
if  [ $a - ge  0 ]
then
         TX=$a
         if  [ $TX - ge  $MAX_TX ]
         then
                 MAX_TX=$TX
         fi
fi
         b=` echo  $line |  grep  "eth0"  | awk  '{print $7}' `
if  [ $b - ge  0 ]
then
         RX=$b
         if  [ $RX - ge  $MAX_RX ]
         then
                 MAX_RX=$RX
         fi
fi
done  /usr/monitor/network/network_ $( date  +%Y%m%d).log 
echo  "最高上传速度为 $MAX_TX kb/s at $(date +%Y%m%d)" >> /usr/monitor/network/tongji .log
echo  "最高下载速度为 $MAX_RX kb/s at $(date +%Y%m%d)" >> /usr/monitor/network/tongji .log

内存硬盘登陆用户数监控

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
[root@Test scripts] # cat sys-warning.sh 
#!/bin/bash
#监控系统负载与CPU、内存、硬盘、登陆用户数,超出警惕值则发邮件告警。
 
#提取本服务器的IP地址信息
IP=` ifconfig  eth0 |  grep  "inter addr"  cut  -f 2 -d  ":"  cut  -f 1 -d  " " `
 
 
 
# 一、监控系统负载的变化状况,超出时发邮件告警:
 
#抓取cpu的总核数
cpu_num=` cat  /proc/cpuinfo  grep  -c  "model name" `
 
#抓取当前系统15分钟的平均负载值
load_15=`uptime |  awk  '{print $12}' `
 
#计算当前系统单个核心15分钟的平均负载值,结果小于1.0时前面个位数补0。
average_load=` echo  "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a"  bc `
 
#取上面平均负载值的个位整数
average_int=` echo  $average_load |  cut  -f 1 -d  "." `
 
#设置系统单个核心15分钟的平均负载的告警值为0.70(即便用超过70%的时候告警)。
load_warn=0.70
 
#当单个核心15分钟的平均负载值大于等于1.0(即个位整数大于0) ,直接发邮件告警;若是小于1.0则进行二次比较
if  [ $average_int > 0 ];  then
echo  "$IP服务器单个核心15分钟的系统平均负载为$average_load,超过警惕值1.0,请当即处理."  | mutt -s  "$IP 服务器系统负载严重告警."  fuquanjun@9kpoker.com
else
 
#当前系统15分钟平均负载值与告警值进行比较(当大于告警值0.70时会返回1,小于时会返回0)
load_now=` expr  $average_load \> $load_warn`
 
#若是系统单个核心15分钟的平均负载值大于告警值0.70(返回值为1),则发邮件给管理员
if  [ $load_now == 1 ];  then
echo  "$IP服务器单个核心15分钟的系统平均负载为$average_load,超过警惕值0.70,请及时处理."  | mutt -s  "$IP 服务器系统负载告警"  fuquanjun@9kpoker.com
fi
fi
 
 
 
 
# 二、监控系统cpu的状况,当使用超过80%的时候发告警邮件:
 
#取当前空闲cpu百份比值(只取整数部分)
cpu_idle=` top  -b -n 1 |  grep  Cpu |  awk  '{print $5}'  cut  -f 1 -d  "." `
 
#设置空闲cpu的告警值为20%,若是当前cpu使用超过80%(即剩余小于20%),当即发邮件告警
if  (($cpu_idle < 20));  then
echo  "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。"  | mutt -s  "$IP服务器CPU告警"  fuquanjun@9kpoker.com
fi
 
 
 
 
 
# 三、监控系统交换分区swap的状况,当使用超过80%的时候发告警邮件:
 
#系统分配的交换分区总量
swap_total=` free  -m |  grep  Swap |  awk  '{print $2}' `
 
#当前剩余的交换分区free大小
swap_free=` free  -m |  grep  Swap |  awk  '{print $4}' `
 
#当前已使用的交换分区used大小
swap_used=` free  -m |  grep  Swap |  awk  '{print $3}' `
 
if  (($swap_used != 0));  then
#若是交换分区已被使用,则计算当前剩余交换分区free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0
swap_per=0` echo  "scale=2;$swap_free/$swap_total"  bc `
 
#设置交换分区的告警值为20%(即便用超过80%的时候告警)。
swap_warn=0.20
 
#当前剩余交换分区百分比与告警值进行比较(当大于告警值(即剩余20%以上)时会返回1,小于(即剩余不足20%)时会返回0 )
swap_now=` expr  $swap_per \> $swap_warn`
 
#若是当前交换分区使用超过80%(即剩余小于20%,上面的返回值等于0),当即发邮件告警
if  (($swap_now == 0));  then
echo  "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。"  | mutt -s  "$IP 服务器内存告警"  | fuquanjun@9kpoker.com
fi
fi
 
 
 
 
# 四、监控系统硬盘根分区使用的状况,当使用超过80%的时候发告警邮件:
 
#取当前根分区(/dev/sda3)已用的百份比值(只取整数部分)
disk_sda3=` df  -h |  grep  /dev/sda3  awk  '{print $5}'  cut  -f 1 -d  "%" `
 
#设置空闲硬盘容量的告警值为80%,若是当前硬盘使用超过80%,当即发邮件告警
if  (($disk_sda3 > 80));  then
echo  "$IP 服务器 /根分区 使用率已经超过80%,请及时处理."  | mutt -s  "$IP 服务器硬盘告警"  fuqunajun@9kpoker.com
fi
 
 
 
 
 
#五、监控系统用户登陆的状况,当用户数超过3个的时候发告警邮件:
 
#取当前用户登陆数(只取数值部分)
users =`uptime |  awk  '{print $6}' `
 
#设置登陆用户数的告警值为3个,若是当前用户数超过3个,当即发邮件告警
if  (($ users  >= 3));  then
echo  "$IP 服务器用户数已经达到$users个,请及时处理。"  | mutt -s  "$IP 服务器用户数告警"  fuquanjun@9kpoker.com
fi



系统初始化脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
[root@Test scripts] # cat check_linux.sh 
#!/bin/bash
 
os_check() {
         if  [ -e  /etc/redhat-release  ];  then
                 REDHAT=` cat  /etc/redhat-release  | cut  -d ' '   -f1`
         else
                 DEBIAN=` cat  /etc/issue  | cut  -d ' '  -f1`
         fi
 
         if  "$REDHAT"  ==  "CentOS"  -o  "$REDHAT"  ==  "Red"  ];  then
                 P_M=yum
         elif  "$DEBIAN"  ==  "Ubuntu"  -o  "$DEBIAN"  ==  "ubutnu"  ];  then
                 P_M=apt-get
         else
                 Operating system does not support.
                 exit  1
         fi
}
 
if  [ $LOGNAME != root ];  then
     echo  "Please use the root account operation."
     exit  1
fi
 
if  which  vmstat &> /dev/null then