检查Cron状态
systemctl status crond
crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled) Active: active (running) …
#Active: active (running) 表示正常
安装Cron服务
yum -y install vixie-cron
yum -y install crontabs
systemctl enable crond #配置开机启动crond
配置定时任务
crontab -e #新建或打开已有的定时任务
0 0 15 /3 /bin/certbot renew —pre-hook “service nginx stop” —post-hook “service nginx start” #在3,6,9,12月份的15号零点零分执行更新
systemctl start crond #启动crond
一行配置共包含6个域,分别用空格分隔,前5个域都是时间域,用来设置定时任务的执行时间,其分别是:分钟域 小时域 日期域 月份域 星期域,第6个域则代表要定时执行的命令,只能写一行,不能写多行。
- 具体的数值,代表一个确定的分钟、小时、日期等等
- 逗号分隔的数值,例如“1,2,3,4,5”
- 连词符(-)指定一个范围,例如:“1-5”,等同于“1,2,3,4,5”
- 星号(*)代表任意一个合法的值,例如在分钟域里表示“每分钟”,在小时域则表示“每小时”
- 斜线(/)操作符,代表间隔多长时间,例如,“*/10”在分钟域里代表每隔10分钟,等同于“0,10,20,30,40,50”
- 在星期域里,0和7都代表星期天
- 如果星期域和日期域都被设置(即都不是星号(*)),那么这两者只要有一个条件满足就会执行定时任务
- 对分钟的设置错误,例如原本想设置每隔两个小时执行一次,设置成了 /2 ,实际上的效果是每偶数小时的每分钟执行一次,即在0、2、4 … 22点的每分钟执行一次,正确的设置应该是0 /2 *
- ? :用在日期域和星期域中,指“没有具体的值” 当两个子表达式其中一个被指定了值以后,为了避免冲突,需要将另外一个的值设为“?”
开启定时服务日志
vi /etc/rsyslog.conf
'''
cron.* /var/log/cron.log #取消注释
'''
systemctl restart rsyslog #重启日志服务