检查Cron状态

  1. systemctl status crond

crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled) Active: active (running) …

  1. #Active: active (running) 表示正常

安装Cron服务

  1. yum -y install vixie-cron
  2. yum -y install crontabs
  3. systemctl enable crond #配置开机启动crond

配置定时任务

  1. crontab -e #新建或打开已有的定时任务

0 0 15 /3 /bin/certbot renew —pre-hook “service nginx stop” —post-hook “service nginx start” #在3,6,9,12月份的15号零点零分执行更新

  1. 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 *
  • ? :用在日期域和星期域中,指“没有具体的值” 当两个子表达式其中一个被指定了值以后,为了避免冲突,需要将另外一个的值设为“?”


开启定时服务日志

  1. vi /etc/rsyslog.conf
  2. '''
  3. cron.* /var/log/cron.log #取消注释
  4. '''
  5. systemctl restart rsyslog #重启日志服务