使用crontab定时任务实现服务器磁盘占用监控,同时把数据推送到数据库

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分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

其他使用就自行百度吧,文章多的是

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用crontab定时任务执行shell脚本连接数据库却无效时,可能有以下几个原因: 1. 环境变量问题:当使用crontab执行脚本时,它会在一个独立的环境中运行,可能缺少某些环境变量。在脚本中使用绝对路径来引用数据库客户端工具和其他依赖项,以确保它们能够正确地被执行。 2. 用户权限问题:crontab任务是在指定的用户权限下运行的。确保该用户具有执行脚本所需的数据库连接权限。如果脚本需要root权限运行,你可能需要以root身份运行crontab任务。 3. 日志记录问题:在脚本中添加日志记录功能,将输出和错误信息重定向到一个文件中。这样可以帮助你排查问题,在日志中查看脚本执行过程中是否出现了错误。 4. 数据库连接配置问题:检查脚本中的数据库连接配置是否正确。确保数据库地址、用户名、密码等参数正确无误,且与手动执行脚本时保持一致。 5. 路径问题:在脚本中使用相对路径时,确保相对路径是相对于脚本所在的位置而不是crontab所在的位置。最好使用绝对路径来引用脚本所需的文件和工具。 6. 依赖项问题:如果脚本依赖于某些软件包或库,请确保这些依赖项已经安装并正确配置。在脚本中添加一些测试命令,例如打印环境变量或执行其他简单的操作,以验证是否存在依赖项问题。 7. 计划任务设置问题:检查crontab任务的设置是否正确。确认定时任务是否按照预期的时间执行,可以尝试设置一个简单的测试任务来验证。 通过排查以上可能的原因,你应该能够找到导致crontab定时任务执行shell脚本连接数据库无效的问题所在,并做出相应的修复。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值