定时任务基本概述
1.什么是crond
crond就是定点执行的计划任务。
2.为什么要使用crond
crond主要是做一些周期性的任务,比如: 每天凌晨3点定时备份数据。
3.定时任务主要分为以下两种使用情况:
- 系统级别的定时任务: 临时文件清理、系统信息采集、日志文件切割
- 用户级别的定时任务: 定时向互联网同步时间、定时备份系统配置文件、定时备份数据库的数据
定时任务时间管理
系统定时任务
定时任务目录
系统定时任务周期:每小时 控制定时任务目录:/etc/cron.hourly
cron.hourly内的可执行文件,每小时都会从头到尾的执行一遍。
系统定时任务周期:每一天 控制定时任务目录:/etc/cron.daily
cron.daily内的可执行文件,每天都会从头到尾的执行一遍。
系统定时任务周期:每一周 控制定时任务目录:/etc/cron.weekly
cron.weekly内的可执行文件,每周都会从头到尾的执行一遍。
系统定时任务周期:每个月 控制定时任务目录:/etc/cron.monthly
cron.monthly内的可执行文件,每月 都会从头到尾的执行一遍。
定时任务配置文件
每一个用户的定时任务是相对隔离,在/var/spool/cron目录下,以当前用户的用户名命名的文》>件,每一个用户都会在这个目录以它的用户名命名。
执行定时任务属主就是用户名自己,每一个用户的定时任务都是以它当前用户的用户信息去执行的。
定时任务日志文件
定时任务运行记录日志文件
cat /var/log/cron
日志常用命令
head : 从头开始查看文件,默认查看10行
-n : 指定查看多少行
tail : 从尾部开始查看文件,默认查看10行
-n : 指定查看多少行
[root@localhost ~]# tail -n 20 /var/log/cron
-f : 实时监控文变化
[root@localhost ~]# tail -f /var/log/cron
less : 类似于vim的方式查看文件
less /var/log/cron
解析 less:
类似于文件
q : 退出
crintab时间周期的含义
[root@kirin ~]# vim /etc/crontab
SHELL=/bin/bash #执行命令的解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin #环境变量
MAILTO=root #邮件发给谁
# 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 #星期
# | | | | |
# * * * * * command to be executed
# * 表示任意的(分、时、日、月、周)时间都执行
# - 表示一个时间范围段, 如5-7点
# , 表示分隔时段, 如6,0,4表示周六、日、四
# /1 表示每隔n单位时间, 如*/10 每10分钟
了解crontab的时间编写
* 02 * * * ls #每天的凌晨2点整执行
* 02 1 * * ls #每月的1日的凌晨2点整执行
* 02 14 2 * ls #每年的2月14日凌晨2点执行
* 02 * * 7 ls #每周天的凌晨2点整执行
* 02 * 6 5 ls #每年的6月周五凌晨2点执行
* 02 14 * 7 ls #每月14日或每周日的凌晨2点都执行
* 02 14 2 7 ls #每年的2月14日或每年2月的周天的凌晨2点执行
*/10 02 * * * ls #每天凌晨2点,每隔10分钟执行一次
* * * * * ls #每分钟都执行
* * 14 2 * ls #每年2月14日的凌晨执行命令
*/5 * * * * ls #每隔5分钟执行一次
* 02 * 1,5,8 * ls #每年的1月5月8月凌晨2点执行
* 02 1-8 * * ls #每月1号到8号凌晨2点执行
* 21 * * * ls #每天晚上21:00执行
45 4 1,10,22 * * ls #每月1、10、22日的4:45执行
45 4 1-10 * * l #每月1到10日的4:45执行
3,15 8-11 */2 * * ls #每隔两天的上午8点到11点的第3和第15分钟执行
* 23-7/1 * * * ls #晚上11点到早上7点之间,每隔一小时执行
15 21 * * 1-5 ls #周一到周五每天晚上21:15执行
crontab命令详解.
参数 | 含义 |
---|---|
-e | 编辑定时任务 |
-l | 查看定时任务 |
-r | 删除定时任务 |
-u | 指定其他用户 |
crontab拒绝某个用户使用
# 使用root将拒绝的用户加入到/etc/cron.deny文件中
[root@localhost data]# echo "user" >> /etc/cron.deny
[root@localhost data]# cat /etc/cron.deny
user
crontab计划任务不自动执行
计划任务不自动执行,重启一下crontab的服务
systemctl restart crond