文件测试
一d:测试是否为目录(Directory).
-e:测试目录或文件是否存在(Exist).
-f:测试是否为文件(File)。
-r;测试当前用户是否有权限读取〈Read)。
-w测试当前用户是否有权限写入{Write),
-x:测试是否设置有可执行《Excute)权限。
执行条件测试操作以后.通过预定义变量$?可以获得测试命令的返回状态值,从而判断该条件是否成立。例如,执行以下操作可测试目录/media/是否存在,如果返回值$?为0,表示存在此目录.否则表示不存在或者虽然存在但不是目录。
[root@Linux01 ~]# [ -d /media/ ]
[root@Linux01 ~]# echo $?
0
[root@Linux01 ~]#
若测试的条件不成立,则测试操作的返回值将不为О(通常为1)。
整数值比较
-eq:第一个数等于(Equal)第二个数。
-ne,第一个数不等于(Not Equal)第二个数。
-gt:第一个数大于(Greater Than)第二个数.
-lt:第个数小于(Lesser Than)第二个数。
-le:第一个数小于或等于(Lesser or Equal)第二个数。
-ge:第一个数大于或等于(Greater or Equal}第二个数。
某公司随着业务的不断发展.所使用的Linux服务器也越来越多。管理员希望编写一个简单的性能监控脚本.放到各服务器中,当监控指标出现异常时发送告警邮件。
1,编写名为sysmon , sh的Shell监控脚本。
2,监控内容包括CPU使用率.内存使用率、根分区的磁盘占用率。
3,百分比只需精确到个位.如79%、12%、23%等,
4,出现以下任-情况时告警:磁盘占用率超过90%、CPU使用率超过80%、内存使用率超过90%。
5,告警邮件通过mail命令发送到monitor@bdqn , com。
6,结合crond 服务,每半小时执行一次监控脚本。
1,编写sysmon . sh脚本。
2,测试sysmon . sh 脚本的执行情况。设置crontab计划任务。
[root@Linux01 aaa]# vim sysmon.sh
#!/bin/bash
# 监控CPU
CUG=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'))
echo "CPU使用率: $CUG %"
#监控内存
MUG=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))
echo "内存使用率: $MUG %"
#监控硬盘
DUG=$(df -h | grep "/$" | awk '{print $5}' | awk -F% '{print $1}')
echo "磁盘占用率: $DUG%"
#设置警告日记文件,警告邮箱
#日记文件的变量
ALOG="/mnt/alert.txt"
#发送到邮箱的变量
AMAIL="root"
#判断是否记录告警
if [ $CUG -gt 20 ]
then
echo "CPU占用率: $CUG %" >> $ALOG
fi
if [ $MUG -gt 6 ]
then
echo "内存使用率: $MUG %" >> $ALOG
fi
if [ $DUG -gt 20 ]
then
echo "磁盘占用率: $DUG %" >> $ALOG
fi
#判断是否发送告警邮箱,最后删除告警日志文件
if [ -f $ALOG ]
then
cat $ALOG | mail -s "Host Alert" $AMAIL
rm -rf $ALOG
fi