一.什么是定时任务
定时任务就是定点执行某个任务。
二.为什么要用定时任务
电商秒杀,定时开启,定时关闭。
定时备份文件
定时同步时间
定时爬虫等等。。。
三.定时任务语法
* * * * * user-name command to be executed
(用户名,那个用户) (要执行的任务)
[root@localhost ~]# vim /etc/crontab
SHELL=/bin/bash(执行命令解释器)
PATH=/sbin:/bin:/usr/sbin:/usr/bin(环境变量)
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root(邮件发给谁)
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)(分钟)
# | .------------- hour (0 - 23) (小时)
# | | .---------- day of month (1 - 31)(日期)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...(月份)
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat(星期)
# | | | | |
# * * * * * user-name command to be executed
【符号代表】
*:代表任意的(分,时,日,月,周)时间都执行
-:表示一个时间范围,时间段,例:5-7
,:表示分隔时间段,例:6,0,4表示每周六,日,四都执行
*/1:表示每隔多长时间执行一次,例:*/10 表示每隔10分钟执行一次。
四.定时任务书写规范
00 02 * * * 每天凌晨2点整执行
00 02 1 * * 每月1号凌晨2点整执行
00 02 14 2 * 每年的2月14号凌晨2点整执行
00 02 * * 7 每周日凌晨2点整执行
00 02 * 6 5 每年6月每周5凌晨2点整执行
00 02 14 * 7 每月14号凌晨两点整执行,或者每月周日凌晨2点整执行。
00 02 14 2 7 每年2月14日凌晨2点整执行,或每年2月的每周日凌晨2点整执行。
*/10 02 * * * 每天从凌晨2点开始,每10分钟执行一次
* * * * * 每分钟执行一次
00 00 14 2 * 每年2月14日凌晨12点整执行
*/5 * * * * 每5分钟执行一次
00 02 * 1,2,8 * 每年1月,2月,8月的凌晨2点整都执行一次
00 02 1-8 * * 每月1号到18号凌晨2点整都执行
0 21 * * * 每天21点整执行一次
45 4 1,10,22 * * 每月的1号,10号,22号的凌晨4点45分执行。
45 4 1-10 * * 每月1号到10号的凌晨4点45分执行
3,15 8-11 */2 * * 每两天8点到11点的3分和15分各执行一次
0 23-7/1 * * * 每天的23号到凌晨7点,每隔1小时执行一次。
15 21 * * 1-5 每周1到周5,21点15分执行
* 02 * * 7 每周日凌晨2点开始执行,2点的每1分钟都执行一次
四.定时任务使用方法
crontab命令
-e参数:编辑定时任务
-l参数:查看定时任务
-r参数:删除定时任务
-u参数:指定其他用户
【实践案例】
1.每天凌晨12点03分做一次备份,备份/etc/目录到/backup/下
准备环境:
[root@localhost ~]# mkdir /backup
(创建backup目录)
[root@localhost ~]# vim backup.sh
tar -zcf /backup/$(date +%F)_etc.tar.gz /etc
(编写脚本,打包/etc/到/backup目录下)
[root@localhost ~]# crontab -e
(添加定时任务)
编写定时任务:
#每天凌晨12点03分备份/etc/目录到/backup/目录下
03 00 * * * /usr/bin/bash backup.sh
(验证:date -s 更改时间,产看/backup目录是否有压缩包)
2.使用root用户每5分钟执行一次时间同步
[root@localhost ~]# crontab -e -u root
(添加定时任务,指定root用户)
[root@localhost ~]# crontab -l
#使用root用户每5分钟执行一次时间同步
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
五.crond注意事项
1.编写定时任务时一定要注释。
2.将需要定期执行的任务写入Shll脚本中,避免直接使用命令无法执行的情况,比如(tar,date等命令)。
3.定时任务的结尾一定要有&>/dev/null,或者将结果追加重定向>>/tmp/date.log文件。
4.注意有些命令是无法执行的,比如:(echo"123">>/tmp/test.log &>/dev/null)
5.在编辑定时任务时,命令必须得使用绝对路径。
六.crond如何备份
1.通过查看/var/log/cron中的执行记录,去推算执行的时间。
2.定时的备份/var/spool/cron/{uwername}
七.crond如何拒绝某个用户使用
使用root将需要拒绝的用户编写到/etc/cron.deny文件中
root用户
[root@localhost ~]# cat /etc/cron.deny
zhangyao
zhangyao用户
[zhangyao@localhost ~]$ crontab -e
You (zhangyao) are not allowed to use this program (crontab)
See crontab(1) for more information