shell磁盘容量检查
随着生产服务器的运行,服务器磁盘会被大量的占用,而我们总是被动的被基础设施部门通知服务器磁盘满了需要维护了,这样就很烦,于是就写了个简单的定时任务定时检测磁盘信息,配合运维服务器实现自动预警的功能,由于是内网,所以不能实现自动发短信和发邮件的功能,所以只能这么搞了。
dbuser="root"
dbpsw="root"
localip=$(/sbin/ifconfig | grep 'ens33' -A 1 | grep 'inet' | awk '{ print $2 }')
dateTime=$(date "+%F %T")
total=$(df -lh | grep /dev/mapper/ | awk '{print $2}' | tr -d G)
used=$(df -lh | grep /dev/mapper/ | awk '{print $3}' | tr -d G)
available=$(df -lh | grep /dev/mapper/ | awk '{print $4}' | tr -d G)
rent=$(df -lh | grep /dev/mapper/ | awk '{print $5}' | tr -d "%")
port="3306"
dbIp="192.168.115.131"
mysql -h$dbIp -u$dbuser -p$dbpsw -e "INSERT INTO study.disk_contain (ip ,create_time,total,used,available,rent) VALUES ('$localip' ,'$dateTime' , $total, $used , $available , $rent );" >/dev/null 2>&1
数据库脚本
CREATE TABLE `disk_contain` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`ip` varchar(16) CHARACTER SET utf8 DEFAULT NULL COMMENT '服务器ip',
`create_time` datetime DEFAULT NULL COMMENT ' 创建时间',
`total` double(3,0) DEFAULT NULL COMMENT '总容量GB',
`used` double(4,2) DEFAULT NULL COMMENT '已使用GB',
`available` double(4,2) DEFAULT NULL COMMENT '可使用GB',
`rent` double(4,2) DEFAULT NULL COMMENT '已使用百分比',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
启动crontab
# crontab -e
//编辑cron 定时器
* * * * * /study/shell/disk_check.sh
查看crontab 运行状态
tail -f /var/log/cron
数据落库截图
遇到的坑
使用ifconfig 命令的时候 shell脚本运行没有问题,但是使用crontab定时执行shell脚本的时候就识别不了ifconfig命令
需要改写成/sbin/ifconfig才能识别
crontab 基本使用
Linux crontab是用来定期执行程序的命令。
当安装完成操作系统之后,默认便会启动此任务调度命令。
。由于cron 是Linux的service(deamon),可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
你也可以将这个服务在系统启动的时候自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
现在cron这个服务已经在进程里面了,我们就可以用这个服务了。
crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
而 linux 任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置