Crontab定时任务详解及实践项目中的一个demo

2023-06-01 00:00:00 实践 定时 详解

crontab 定时任务

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。


crontab的文件格式

分 时 日 月 星期 要运行的命令

第1列分钟0~59

第2列小时0~23(0表示子夜)

第3列日1~31

第4列月1~12

第5列星期0~7(0和7表示星期天)

第6列要运行的命令


例子:

* * * * * echo "hello" #每1分钟执行hello
3,15 * * * * myCommand #每小时第三分钟和第十五分钟执行
3,15 8-11 * * * myCommand# 在上午8点到11点的第3和第15分钟执行
3,15 8-11 */2  *  * myCommand #每隔两天的上午8点到11点的第3和第15分钟执行
30 21 * * * /etc/init.d/smb restart #每晚的21:30重启smb
0 23 * * 6 /etc/init.d/smb restart #每星期六的晚上11 : 00 pm重启smb



添加计划任务

crontab -e


重启计划任务

service crond restart


查看计划任务日志文件

tail /var/log/cron


实践项目中的案例:


每天凌晨1点备份mysql数据库,存在/opt/mysqlbak/文件夹里面,文件名以xxx拼接日期,并且自动删除30天以前的备份文件。


1.在/opt/里面创建mysqlbak文件夹

2.在/opt/里面穿件计划任务脚本文件,blogbak.sh

[[email protected] ~]# cd /opt/
[[email protected] opt]# ll
total 16
-rwxrwxrwx 1 root root   290 May  6 17:33 blogbak.sh
drwxrwxrwx 2 root root 12288 Sep  7 01:00 mysqlbak


3.vi blogbak.sh


#!/bin/sh
user="root"
passwd="Qxxxx"
date=`date +%F`
#备份表
echo "1111" > /opt/mysqlbak/test$date.txt
/usr/local/mysql/bin/mysqldump -u$user -p$passwd blog > /opt/mysqlbak/blogbak$date.sql
#删除旧表30天前的
#find /opt/mysqlbak -mtime +30 -name "*.*" -exec rm -Rf {} \;

4.添加计划任务

crontab -e

* 1 * * * /opt/blogbak.sh

想要立马生效 直接重启计划任务


看看效果我的这个脚本已跑了个把月了

11.png


相关文章