Crond定时任务

  • CrondLinux下用来周期性执行某种任务或者等待处理某些事件的一个守护进程。
  • 当安装了OS后默认会自动启动Crond进程,每分钟定期检查是否有需要执行的任务,如果有则自动执行。

参考https://blog.csdn.net/qq_22172133/article/details/81263736


(一)Linux下的任务调度

1.系统任务调度:/etc/crontab

/etc目录下的crontab文件是系统任务调度的配置文件,记录了系统周期性所执行的工作,比如写缓存数据到硬盘、日志清理等。如:

# 【Crond任务运行的环境变量】
# 指定使用哪个shell,比如bash
SHELL=/bin/bash
# 指定了系统执行命令的路径
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# Crond任务执行信息将通过电子邮件发送给root用户
MAILTO="root"
# 执行命令或脚本时使用的主目录
HOME=/

# 【此部分是crontab文件,第二节介绍】
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

2.用户任务调度

  • /etc/cron.deny不允许使用crontab命令的用户
  • /etc/cron.allow允许使用crontab命令的用户
  • /var/spool/cron/所有用户crontab文件存放的目录,以用户名命名

(二)crontab

用户所建立的crontab文件中,每一行都代表一个任务,每行的每个字段代表一项设置。

1.文件格式

minute hour day month week command
  1. minute:分钟0 ~ 59之间的整数
  2. hour:小时0 ~ 23之间的整数
  3. day:日期1 ~ 31之间的整数
  4. month:月份1 ~ 12之间的整数
  5. week:星期几0 ~ 7之间的整数,0/7表示星期日
  6. command:要执行的命令,可以是系统命令,也可以是自己写的脚本

特殊字符

在上述字段中,可以使用特殊字符:

  1. *:星号 —— 表示所有可能的值,比如month字段为*表示每个月;
  2. ,:逗号 —— 用来指定一个范围列表,比如1,2,3,4,5,6,7
  3. -:中杠 —— 用在整数中间表示一个整数范围,比如2-6表示2,3,4,5,6
  4. /:正斜杠 —— 指定时间的间隔频率,比如hour字段为0-23/2表示每隔2小时执行一次;minute字段为*/10表示10分钟执行一次。

2.命令格式

crontab [-u user] fileName
crontab [-u user] [-e|-l|-r]
  1. -u user:设定某个用户的crontab服务
  2. fileNamecrontab文件名
  3. -e:编辑某个用户的crontab文件内容,如果不指定用户,则编辑当前用户的

    e for edit

  4. -l:显示某个用户的crontab文件内容,如果不指定用户,则显示当前用户的

    l for list

  5. -r:删除某个用户的crontab文件内容,如果不指定用户,则删除当前用户的

    r for remove


(三)Crond服务

  1. 安装(一般不需要)
yum install crontabs
  1. 启动/关闭/重启/重载服务
/sbin/service crond start   #启动
/sbin/service crond stop    #关闭
/sbin/service crond restart #重启
/sbin/service crond reload  #重载配置
  1. 查看服务状态
service crond status