介绍:任务调度是指在某个时间执行特定的程序或者命令
基本语法:crontab[选项]
快速入门:
1.每隔1分钟,就将当前的日期信息,追加到 /tmp/mydate.log 文件中
1.1输入:crontab -e 进去
1.2编辑:*/1 * * * * ls -l /etc >> /tmp/t.txt (意思是每一分钟 都会执行ls - l /etc 并把结果输入都 t.txt中)
1.3保存退出 :wq
1.4每一分钟都会调用 ls -l /etc 把查询到的结果 输入到 t.txt
应用实例:
案例一:每隔一分钟,就把当前系统时间,追加到 /tmp/mydate.log 文件中(编辑文件输入 i ,才可以插入;保存退出输入 :wq)
1.先创建一个脚本 /home/mytask1.sh ,在mytask1.sh里面输入下面的内容 。输入完保存退出
date >> /tmp/mydate.log
2.在操作台执行,给这个mytask1.sh 一个可以执行的权限,因为文件刚创建的时候,没有执行权限,只有读写权限
chmod 744 mytask1.sh
3. crontab -e (解释:在操作页面输入crontab -e 进行编辑)
4.在上一步打开的页面中进行编辑 并 保存退出 (解释:下面的指令是 每隔一分钟,去执行 /home/mytask1.sh )
*/1 * * * * /home/mytask1.sh
5.查看/tmp/mydate.log 下这个文件内容
案例2:每天凌晨2点,将mysql 数据库testdb,备份到文件mydb.bak中 (和案例操作步骤一样,只是.sh文件中的内容不一样)
1.先创建一个脚本 /home/mytask2.sh,在里面编写指令(每个人数据库安装地址用户名都不同,自己参考)。保存退出
/user/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
2.给 /home/mytask2.sh 一个可以执行的权限
chmod 744 mytask2.sh
3.crontab -e
4.打开crontab 中,编辑
0 2 * * * /home/mytask2.sh
5.结束
其它操作:
crond 相关指令:
1) conrtab –r:终止任务调度。
2) crontab –l:列出当前有那些任务调度
3) service crond restart [重启任务调度]
参数细节说明:
- 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分钟就执行一遍命令 |
- 特定时间执行任务案例
时间 | 含义 |
45 22 * * * 命令 | 在22点45分执行命令 |
0 17 * * 1 命令 | 每周1 的17点0分执行命令 |
0 5 1,15 * * 命令 | 每月1号和15号的凌晨5点0分执行命令 |
40 4 * * 1-5 命令 | 每周一到周五的凌晨4点40分执行命令 |
*/10 4 * * * 命令 | 每天的凌晨4点,每隔10分钟执行一次命令 |
0 0 1,15 * 1 命令 | 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。 |
注意:如果是简单的任务,可以不用写脚本,直接使用crontab加入任务即可
对于比较复杂的任务,需要写 脚本(shell编程)