Crond定时任务

Crond定时任务

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

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


(一)Linux下的任务调度

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 【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.文件格式

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.命令格式

1
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. 安装(一般不需要)
1
yum install crontabs
  1. 启动/关闭/重启/重载服务
1
2
3
4
/sbin/service crond start   #启动
/sbin/service crond stop #关闭
/sbin/service crond restart #重启
/sbin/service crond reload #重载配置
  1. 查看服务状态
1
service crond status

(四)Java轮子:cron-utils

通过cron-utils可以以代码的形式配置Cron定时任务:

1
2
3
4
5
6
7
8
9
10
11
public Cron cronConfig() {
//任务类型:UNIX、CRON4J、QUARTZ、SPRING
//小时:on(从多少小时开始)
//分钟:every(每多少分钟)
//创建实例并验证
return CronBuilder.cron(CronDefinitionBuilder.instanceDefinitionFor(UNIX) )
.withHour(on(START_HOUR) )
.withMinute(every(START_MIN) )
.instance()
.validate();
}
-------------本文结束感谢您的阅读-------------

本文标题:Crond定时任务

文章作者:DragonBaby308

发布时间:2019年10月28日 - 22:37

最后更新:2020年04月20日 - 22:50

原始链接:http://www.dragonbaby308.com/crond/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

急事可以使用右下角的DaoVoice,我绑定了微信会立即回复,否则还是推荐Valine留言喔( ఠൠఠ )ノ
0%