Crontab概述

2023年 10月 9日 44.4k 0

一、Linux中的crontab

安装

1. centos安装crontab

yum install vixie-cron crontabs #安装Crontab

chkconfig crond on #设置开机启动Crontab

service crond start #启动Crontab

2. debian安装crontab

apt-get install cron #安装Crontab

/etc/init.d/cron restart #重启Crontab

/etc/init.d/crond start #启动Crontab

/etc/init.d/crond stop # 关闭Crontab

命令

crontab命令用于安装,删除或者列出用于驱动cron后台进程的表格,也就是说用户需要把执行的命令放到crontab文件中以获得执行,每个用户都可以有自己的crontab文件

crontab -u:设定某个用户的cron服务

crontab -l:列出某个用户cron服务的详细内容

crontab -r:删除某个用户的cron服务

crontab -e:编辑某个用户的cron服务

配置语法

1.Minute Hour Day Month Dayofweek command ----> 分钟,小时,天,月,天每星期

2.每个字段代表的含义及取值范围:

Minute: 分钟(0-59),表示每个小时的第几分钟执行该任务
Hour: 小时(0-23),表示每天的第几个小时执行该任务
Day: 日期(1-31),表示每月的第几天执行该任务
Month: 月份(1-12),表示每年的第几个月执行该任务
DayOfWeek:星期(0-6,0代表星期天),表示每周的第几天执行该任务
Command:指定要执行的命令(如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径)

备注:对于不指定的字段,要用“”来填补其位置。同时,cron支持类似正则表达式的书写*,支持如下几个特殊符号定义:

“ * ” ,代表所有的取值范围内的数字;
” / “, 代表”每”(“*/5”,表示每5个单位);
” – “, 代表从某个数字到某个数字(“1-4”,表示1-4个单位);
” , “, 分开几个离散的数字;

举栗

* * * * * myCommand --> 表示每1分钟执行一次命令
3,15 * * * * myCommand --> 每小时的第3和第15分钟执行命令
3,15 8-11 * * * myCommand --> 上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand --> 每隔2天的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand --> 每周一上午8点到11点的第3和第15分钟执行

二、celery定时任务配置

配置语法

crontab的参数默认为:minute=u’’, hour=u’’, day_of_week=u’’, day_of_month=u’’, month_of_year=u’*’,表示每分钟执行一次,相当于:

crontab(minute='*', hour='*', day_of_week='*', day_of_month='*', month_of_year='*')

定义是:每天、每小时、每分钟执行一次任务。这说法太反人类语言习惯,简单说就是每1分钟执行一次任务

1>:month_of_year:月份
2>:day_of_month:日期
3>:day_of_week:周
4>:hour:小时
5>:minute:分钟

举栗

crontab(hour='*/24') --> 每24小时执行一次;
crontab(minute=30, hour=0) --> 每天的凌晨00:30执行一次
crontab(hour=7, minute=0, day_of_month=1) --> 每个月的1号的7:00执行一次
crontab(hour=7, minute=30, day_of_week=1) --> 每个星期1的早上7:30执行一次
crontab(minute=15) --> 每小时的15分时刻执行一次任务,而不是每15分钟执行一次任务
crontab(minute=0, hour=0) --> 每天00:00时刻执行任务
crontab(minute='0,30') --> 0分和30分执行任务
crontab(minute='*', hour='9-12') --> 指定9点到12点每小时的每分钟执行任务,*是默认值,可以省略为:crontab(hour='9-12')
crontab(hour='9-12,20') --> 指定9点到12点和20点钟每分钟执行任务

三、备注

Go语言和Java中的定时任务cron都是可以精确到秒的,但是Linux中不行;
如果使用5个点表示的话,相当于直接省略了第一个秒

(1)定义:cron表达式代表一个时间的集合,使用6个空格分隔的字段表示,分别表示为:秒,分,时,日,月,星期

(2)cron特定字符说明:

星号(*):匹配所有值,如在第5个字段使用星号(month),表示每个月
斜线(/):表示增长间隔,如第1个字段(minutes) 值是3-59/15,表示每小时的第3分钟开始执行一次,之后每隔15分钟执行一次(即3、18、33、48这些时间点执行),这里也可以表示为:3/15
逗号(,):用于枚举值,如第6个字段值是MON,WED,FRI, 表示星期一、三、五执行
连字号(-):表示一个范围,如第3个字段的值为9-17表示9am 到 5pm 直接每个小时(包括9和17)
问号(?):只用于日(Day of month)和星期(Day of week),表示不指定值,可以用于代替*

例如: 秒-分-时-日-月-星期 
  每隔5秒执行一次:*/5 * * * * ?
  每隔1分钟执行一次:0 */1 * * * ?
  每天23点执行一次:0 0 23 * * ?
  每天凌晨1点执行一次:0 0 1 * * ?
  每月1号凌晨1点执行一次:0 0 1 1 * ?
  在26分、29分、33分执行一次:0 26,29,33 * * * ?
  每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论