任务调度
原理示意图:
crontab 进行定时任务的设置。比如:写了一个爬虫需要每天早上八点执行,就可以用到Crontab;安装的Tomcat服务器需要每天凌晨重启一次,也可以使用到Crontab。总之,几乎所有的定时任务,我们都可以通过Crontab这个工具来完成。但如果/etc/crontab 文件权限设置不正确,crontab不会自动执行任务。
概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
- 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等。
- 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
基本语法
crontab 【选项】
常用选项:
- -e 编辑crontab定时任务
- -l 查询crontab任务
- -r 删除当前用户所有的crontab任务
快速入门
设置任务调度文件: /etc/crontab
设置个人任务调度。执行crontab -e 命令。
接着输入任务到调度文件
如:*/1 * * * * ls -l /etc/ > /tmp/to.txt 命令
意思说每小时的每分钟执行 ls -l /etc/ > /tmp/to.txt 命令
参数细节说明:5个占位符说明
项目 | 含义 | 范围 |
---|---|---|
第一个“*” | 一个小时当中的第几分钟 | 0-59 |
第二个“*” | 一天当中的第几个小时 | 0-23 |
第三个“*” | 一个月当中的第几天 | 1-31 |
第四个“*” | 一年当中的第几月 | 1-12 |
第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号的说明:
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个*代表一小时每分钟都执行一次的意思 |
, | 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分、12点0分、16点0分都执行一次命令 |
- | 代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每个10分钟就执行一遍命令 |
运行结果:
案例
- 每隔一分钟,就将当前的日期信息,追加到/tmp/mydate 文件中。
#mystask.sh文件内容:
date >> /tmp/mydate
#修改mytask.sh文件,赋予其可执行权限:
chmod 744 mystask.sh
crontab -e
编写文件内容如下图:
- 每天凌晨2:00将mysql数据库testdb,备份到文件中。
- 先写一个文件 /home/mytask2.sh
文件里面写:
./usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
- 给mytask2.sh文件一个可以执行的权限
chmod 744 /home/mytask2.sh
- crontab -e
- 在文件中添加以下命令:
0 2 * * * * /home/mytask2.sh
- 成功,可以查看备份文件是否生成
其他任务调度命令
- 列出当前有哪些任务调度
- 重启等服务,centos7环境
#启动
/bin/systemctl start crond.service
#重启
/bin/systemctl restart crond.service
#关闭
/bin/systemctl stop crond.service
- 查看crontab状态:
service crond status
来源:CSDN
作者:weixin_42956047
链接:https://blog.csdn.net/weixin_42956047/article/details/103634023