linux 基本服务检测脚本

     这里是我自己写的一些监控linux基本服务的脚本,基于公司的实际生产环境,公司已经在使用zabbix,但是由于和公司要求不符合,这里就都使用了自己手写的脚本进行取值,有不合理的地方希望大家能够指出来。


1. cpu_load.sh 

#!/bin/bash

#这里是做的一个cpu load负载的一个脚本,取的值为一分钟。

 uptime | awk '{print $10}' | awk -F "," '{print $1}'

2.  cpu_used.sh 

#!/bin/bash

#这里取值取的是cpu的使用百分比, 单位%

File=cpu_`date +%Y%m%d`

sar -u >/tmp/$File

free=`tac /tmp/$File|sed -n 2p|awk '{print $NF}'`

echo $free|awk '{printf "%.2f\n", 100-$1}'


 3. Mem_free.sh 

#!/bin/bash

# 这个一个计算内存可用容量脚本 可用容量等于free+buffers+cached,单位为M

Free=`free -m| grep Mem| awk '{print $4}'`

Buffers=`free -m| grep Mem| awk '{print $6}'`

Cached=`free  -m| grep Mem| awk '{print $7}'`

Avial=$(($Free+$Bufers+$Cached))

echo $Avial

4. Mem_total.sh 

#!/bin/bash

#单位名称为M

free -m | grep Mem| awk  '{print $2}'


5. Mem_usage.sh 

#!/bin/bash

#这个一个计算内存可用使用率脚本 可用容量等于free/total

Free=`free -m| grep Mem| awk '{print $4}'`

Buff=`free -m| grep Mem| awk '{print $6}'`

Cach=`free -m| grep Mem| awk '{print $7}'`

Total=`free -m | grep Mem| awk '{print $2}'`

Tused=$(($Total-$Free-$Buff-$Cach))

echo "$Tused $Total"|awk '{printf ("%.2f\n",$1*100/$2)}' 


6.IO_read.sh 

#!/bin/bash

#原始单位:块  换算单位:M

file=ior_`date +%Y%m%d`

sar -b > /tmp/$file

Read=`tac /tmp/$file|sed -n 2p|awk '{print $(NF-1)}'`

echo $Read|awk '{printf  ("%.2f\n", $1*4/1024)}'

 

7.IO_write.sh 

#!/bin/bash

#原始单位:K  换算单位:M

file=iow_`date +%Y%m%d`

sar -b > /tmp/$file

Write=`tac /tmp/$file|sed -n 2p|awk '{print $NF}'`

echo $Write|awk '{printf ("%.2f\n", $1*4/1024)}'



8. disk_total.sh 

#!/bin/bash

#这里取值取的是disk total值,单位名称是GB

df -hT| grep '/$'| awk '{print $2}'| awk '{print$1}'|sed 's/G//g'  


9. disk_usage.sh 

#!/bin/bash

#这里取值取的是disk 使用率值,单位名称是%

df -hT| grep '/$'| awk '{print $5}'| awk '{print$1}'|sed 's/%//g'


10. disk_used.sh 

#!/bin/bash

#这个是取值 取的是disk used的值,单位是GB

df -hT| grep '/$'| awk '{print $3}'| awk '{print$1}'|sed 's/G//g'


11.  Network_in.sh 

#!/bin/bash

#这是一个检测网卡入口流量的脚本,单位名称为Mb

File=net_`date +%Y%m%d`

for i in `ls /etc/sysconfig/network-scripts/|grep ifcfg|grep -v lo|awk -F "-" '{print $2}'`

do

mii-tool $i >/dev/null 2>&1

if [ $? -eq 0 ];

then

   sar -n DEV 1 2|grep $i >/tmp/$File

   Net_in=`tac /tmp/$File|sed -n 2p|awk '{print $6}'`

   echo $Net_in|awk '{printf  ("%.2f\n", $1*8/1000)}'

 else

   continue

fi

done


12. Network_out.sh 

#!/bin/bash

# 这是一个检测网卡出口流量的脚本,单位名称为Mb

File=net_`date +%Y%m%d`

for i in `ls /etc/sysconfig/network-scripts/|grep ifcfg|grep -v lo|awk -F "-" '{print $2}'`

do

mii-tool $i >/dev/null 2>&1

if [ $? -eq 0 ];

then

   sar -n DEV 1 2|grep $i >/tmp/$File

   Net_out=`tac /tmp/$File|sed -n 2p|awk '{print $7}'`

   echo $Net_out|awk '{printf  ("%.2f\n", $1*8/1000)}'

 else

   continue

fi

done