Crontab定时任务详解及实践项目中的一个demo
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
想要立马生效 直接重启计划任务
看看效果我的这个脚本已跑了个把月了
相关文章