1. crontab循环执行定时任务
1.1 crond服务管理与控制访问
crontab命令是需要crond服务支持的,crond服务同样是独立的服务。 crond服务默认是自启动的。
[root@centos2 ~]# systemctl status crond ● crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled) Active: active (running) since 三 2019-11-13 16:24:18 CST; 2h 24min ago Main PID: 1267 (crond) Tasks: 1 CGroup: /system.slice/crond.service └─1267 /usr/sbin/crond -n 11月 13 16:24:18 centos2 systemd[1]: Started Command Scheduler. 11月 13 16:24:19 centos2 crond[1267]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 17% if used.) 11月 13 16:24:19 centos2 crond[1267]: (CRON) INFO (running with inotify support)
crontab命令和at命令类似,也是通过/etc/cron.allow和/etc/cron.deny文件来限制某些用户是否可以使用crontab命令的,原则也非常相似
当系统中有/etc/cron.allow文件时,只有希尔此文件的用户可以使用crontab命令,没有写入的用户不能使用crontab命令。同样如果有此文件,/etc/cron.deny文件会被忽略,/etc/cron.allow文件的优先级更高
当系统中只有/etc/cron.deny文件时,则写入此文件的用户不能使用crontab命令,没有写入文件的用户可以使用crontab命令
这个规则基本和at的规则一直,同样/etc/cron.allow文件的优先级比/etc/cron.deny文件的优先级高,Linux中默认只有/etc/cron.deny文件。
1.2 用户的crontab设置
每个用户都可以实现自己的crontab定时任务,只要是使用这个用户身份执行“crontab -e”命令即可,当然这个用户不能加入/etc/cron.deny文件中
[root@centos2 ~]# crontab [选项] 选项: -e:编辑crontab定时任务 -l:查询crontab任务 -r:删除当前用户所有的crontab任务,如果有多个任务,只想删除一个,可以使用“crontab -e” -u 用户名:修改或删除其他用户的crontab任务。只有root使用
[root@centos2 ~]# crontab -e #crontab编辑界面。会打开vim编辑 * * * * * 执行的任务
项目 | 含义 | 范围 |
第一个“*” | 几分 | 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分钟就执行一遍命令 |
例
时间 | 含义 |
10 2 * * * 命令 | 每天凌晨2点10分执行命令 |
10 2 * * 7 命令 | 每周日凌晨2点10分执行命令 |
10 2 1,15 * * 命令 | 每月1号15号的凌晨2点10分执行命令 |
10 2 * * 1-6 命令 | 每周一至周六的凌晨2点10分执行命令 |
*/10 2 * * * 命令 | 每天凌晨2点,每隔10分钟执行一次命令 |
10 2 1,15 * 1 命令 | 每月1号15号,每周一的2点10分执行命令。注意:最好星期几和几号不要同时出现,因为定义的都是天。容易混乱 |