代码语言:javascript复制
#!/bin/bash
# 服务器磁盘 内存 进程 错误日志
# 脚本开发:万杨
lggname="root"
#lggname="zxin10"
setdiskp=13 # 设置磁盘分区告警百分率,为纯数字
setfree=6 # 设置内存告警百分率,为纯数字
ipa=$( ip a | grep 'scope global' | awk -F" " '{print $2}' | awk -F"/" '{print $1}' )
echo "
#------------------------- 检测设备 -------------------------#
设备IP:$ipa
"
df -hl ;
diskcp=(`df -hl | grep -v Filesystem | awk -F" " '{print $5}' | awk -F"%" '{print $1}'`)
for i in $diskcp
do
if [ $i -gt $setdiskp ]
then
echo "告警 : ============================> 磁盘至少一个分区出现占用率超过 $setdiskp %"
fi
done
echo "#------------------------- 存储使用情况 -------------------------#" ;
free -m
mtotal=`free -m | grep Mem | awk -F" " '{print $2}' ` ; echo "总内存为:$mtotal MB"
mused=`free -m | grep Mem | awk -F" " '{print $3}' ` ; echo "已使用:$mused MB"
syl=$(
awk 'BEGIN{
mtotal='"$mtotal"'
mused='"$mused"'
syl=mused/mtotal*100
printf "%d" , syl
}'
)
echo "内存使用率:$syl %"
if [ $syl -gt $setfree ] ; then
echo "
告警 : ============================> 内存占用超过 $setfree %"
fi
#ge 大等于,le小等于; gt lt ; wc -l 统计行数 sort 按名称排序 ; uniq -c 计算重复的行个数
echo "#------------------------- 内存使用情况 -------------------------#"
#ps -ef | grep 'root' | grep -v Proto | awk -F" " '{print $8}' | awk -F":" '{print $1}' | sort | uniq -c
ps -u $lggname | awk -F" " '{print $4}' | sort | uniq -c
#---------- 判断进程函数 ----------#
runfunction(){
echo "主机:$htname"
for i in ${psdz[*]}
do
runps=$(ps -u $lggname | awk -F" " '{print $4}' | sort | uniq -c |grep $i |wc -l )
if [[ $runps -lt 1 ]]
then
echo " 告警 : ============================> $i 服务已停止运行 "
else
echo "运行中:$i"
fi
done
echo "#------------------------- 运用进程 -------------------------#"
}
#-------- 根据名字进行判断进程 -------#
htname=$( uname -a | awk -F" " '{print $2}' | sed "s/[0-9]*$//g")
echo "#------------------------- 错误日志 -------------------------#"