使该脚本实现: 监控系统中内存、cpu、磁盘的占用率
1.1 命令解释cat /proc/meminfo
/proc/meminfo
是了解Linux系统内存使用状况的主要接口
我们最常用的free
、vmstat
等命令就是通过它获取数据的 ,/proc/meminfo
所包含的信息比free
等命令要丰富得多
bc
命令
bc 命令是任意精度计算器语言,通常在linux下当计算器用。
它类似基本的计算器, 使用这个计算器可以做基本的数学运算。
提示系统没有bc命令,需要yum install bc
安装
#memory_used_rate
LoadMemory=$(cat /proc/meminfo | awk '{print $2}')
Total=$(echo $LoadMemory | awk '{print $1}')
Free1=$(echo $LoadMemory | awk '{print $2}')
Free2=$(echo $LoadMemory | awk '{print $3}')
Free3=$(echo $LoadMemory | awk '{print $4}')
Used=`expr $Total - $Free1 - $Free2 - $Free3`
Used_Rate=`expr $Used/$Total*100 | bc -l`
Memory_Used_Rate=`expr $Used_Rate/1 | bc`
echo $Memory_Used_Rate%
监控磁盘占用率
使用 df
命令查看磁盘 -h
格式化为方便查看的格式
[root@localhost bin]# df -h /dev/sda*
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
/dev/sda1 1014M 160M 855M 16% /boot
devtmpfs 475M 0 475M 0% /dev
#disk_used_rate
Location=/dev/sda1 # 这里根据自己的磁盘位置修改
Disk_Used_Rate=$(df -h | grep $Location | awk '{print $5}')
echo $Disk_Used_Rate
监控cpu使用率
#cpu_used_rate
Log=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')
Free=$(echo $Log | awk '{print $4}')
Total=$(echo $Log | awk '{print $1+$2+$3+$4+$5+$6+$7}')
Cpu_Used=`expr $Total - $Free`
Cpu_Used_Rate=`expr $Cpu_Used/$Total*100 |bc -l`
echo $Cpu_Used_Rate
1.2 脚本代码
# Colors
red='\033[31m' # 定义红色
green='\033[32m' # 定义绿色
#memory_used_rate
LoadMemory=$(cat /proc/meminfo | awk '{print $2}')
Total=$(echo $LoadMemory | awk '{print $1}')
Free1=$(echo $LoadMemory | awk '{print $2}')
Free2=$(echo $LoadMemory | awk '{print $3}')
Free3=$(echo $LoadMemory | awk '{print $4}')
Used=`expr $Total - $Free1 - $Free2 - $Free3`
Used_Rate=`expr $Used/$Total*100 | bc -l`
Memory_Used_Rate=`expr $Used_Rate/1 | bc`
# disk_used_rate
Location=/dev/sda1
Disk_Used_Rate=$(df -h | grep $Location | awk '{print $5}')
#cpu_used_rate
Log=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')
Free=$(echo $Log | awk '{print $4}')
Total=$(echo $Log | awk '{print $1+$2+$3+$4+$5+$6+$7}')
Cpu_Used=`expr $Total - $Free`
Cpu_Used_Rate=`expr $Cpu_Used/$Total*100 |bc -l`
cpu_Used_Rate=`expr $Cpu_Used_Rate/1 | bc`
echo -e "+----------------------------------------------------------------"
echo -e "${green} 内存使用率:${red}"$Memory_Used_Rate%
echo -e "${green} 磁盘使用率:${red}"$Disk_Used_Rate
echo -e "${green} Cpu使用率:${red}"$cpu_Used_Rate%
echo -e "+----------------------------------------------------------------"
echo -e " "
crontab -e
进入定时系统,设置计划任务
输入:*/1 * * * * /root/bin/sysmon.sh
收到邮件:
# 输入想要查询的ip段
IP1=`echo $1 |awk -F"." '{print $1}'`
IP2=`echo $1 |awk -F"." '{print $2}'`
IP3=`echo $1 |awk -F"." '{print $3}'`
IP4=`echo $1 |awk -F"." '{print $4}'`
for ((i=3; i>0; i--))
do
echo -e "倒数"$i"秒,开始扫描"
done
# 开始连接
wget ftp://$IP1.$IP2.$IP3.$IP4 &>null
# 如果连接成功
if [ $? -eq 0 ]
then echo "$IP1.$IP2.$IP3.$i is open"
fi