定时任务-->crontab
定时任务
at
适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务。
crontab-->是一个服务,服务名为crond
需要启动一个服务crond才行,crond服务通过crontab命令实现
常用命令
crontab -u # 设定某个用户的cron服务
crontab -l # 显示crontab文件(显示已设置的定时任务)
crontab -e # 编辑crontab文件(编辑定时任务)
crontab -r # 删除crontab文件(删除定时任务)
crontab -i # 删除crontab文件提醒用户(删除定时任务)
- 目录:/etc/crontab
定时任务格式
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
用户的定时任务分6段,分别是:分,时,日,月,周,命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
*:表示任意时间都,实际上就是“每”的意思。可以代表00-23小时或者00-12每月或者00-59分
-:表示区间,是一个范围,00 17-19 * * * cmd,就是每天17,18,19点的整点执行命令
,:是分割时段,30 3,19,21 * * * cmd,就是每天凌晨3和晚上19,21点的半点时刻执行命令
/n:表示分割,可以看成除法,*/5 * * * * cmd,每隔五分钟执行一次
设置定时任务的几种方法
- 直接编辑配置文件-->路径:/etc/crontab
- 注意:需要增加用户名,在第二个字段
- 使用crontab -e命令编辑-->为当前用户增加定时任务,不需要增加用户名
- 直接编辑目标文件-->路径:/var/spool/cron/
- 上一种方法编辑的就是该目录里的文件,文件以用户名命名
相关文件
- /etc/cron.deny # 该文件中所列用户不允许使用crontab命令
- /etc/cron.allow # 该文件中所列用户允许使用crontab
- /var/spool/cron/ # 所有用户crontab文件存放的目录,以用户名命名
- /var/log/cron # crond日志文件
注意事项
- 修改配置文件后自动生效,不需要reload
anacron
无法周期性执行,只能以天为周期,但有个特点,在关机状态下未>执行的任务,下次开机时可以补上执行