精华内容
参与话题
问答
  • cron表达式

    2020-01-10 10:55:23
    Cron Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month DayofWeek Year或 Seconds Minutes Hours ...

    Cron

    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:

    Seconds Minutes Hours DayofMonth Month DayofWeek Year或

    Seconds Minutes Hours DayofMonth Month DayofWeek

    每一个域可出现的字符如下:

    Seconds:可出现", - * /"四个字符,有效范围为0-59的整数

    Minutes:可出现", - * /"四个字符,有效范围为0-59的整数

    Hours:可出现", - * /"四个字符,有效范围为0-23的整数

    DayofMonth:可出现", - * / ? L W C"八个字符,有效范围为0-31的整数

    Month:可出现", - * /"四个字符,有效范围为1-12的整数或JAN-DEc

    DayofWeek:可出现", - * / ? L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推

    Year:可出现", - * /"四个字符,有效范围为1970-2099年

    每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是:

    (1):表示匹配该域的任意值,假如在Minutes域使用, 即表示每分钟都会触发事件。

    (2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和 DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。

    (3)-:表示范围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次

    (4)/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.

    (5),:表示列出枚举值值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。

    (6)L:表示最后,只能出现在DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。

    (7)W: 表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一 到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份

    (8)LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。

    (9)#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。

    举几个例子:

    0 0 2 1 * ? * 表示在每月的1日的凌晨2点调度任务

    0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业

    0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作

    一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。

    按顺序依次为

    秒(0~59)

    分钟(0~59)

    小时(0~23)

    天(月)(0~31,但是你需要考虑你月的天数)

    月(0~11)

    天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)

    年份(1970-2099)

    其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?

    0 0 10,14,16 * * ? 每天上午10点,下午2点,4点

    0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时

    0 0 12 ? * WED 表示每个星期三中午12点

    “0 0 12 * * ?” 每天中午12点触发

    “0 15 10 ? * *” 每天上午10:15触发

    “0 15 10 * * ?” 每天上午10:15触发

    “0 15 10 * * ? *” 每天上午10:15触发

    “0 15 10 * * ? 2005” 2005年的每天上午10:15触发

    “0 * 14 * * ?” 在每天下午2点到下午2:59期间的每1分钟触发

    “0 0/5 14 * * ?” 在每天下午2点到下午2:55期间的每5分钟触发

    “0 0/5 14,18 * * ?” 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发

    “0 0-5 14 * * ?” 在每天下午2点到下午2:05期间的每1分钟触发

    “0 10,44 14 ? 3 WED” 每年三月的星期三的下午2:10和2:44触发

    “0 15 10 ? * MON-FRI” 周一至周五的上午10:15触发

    “0 15 10 15 * ?” 每月15日上午10:15触发

    “0 15 10 L * ?” 每月最后一日的上午10:15触发

    “0 15 10 ? * 6L” 每月的最后一个星期五上午10:15触发

    “0 15 10 ? * 6L 2002-2005” 2002年至2005年的每月的最后一个星期五上午10:15触发

    “0 15 10 ? * 6#3” 每月的第三个星期五上午10:15触发

    有些子表达式能包含一些范围或列表

    例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”

    “*”字符代表所有可能的值

    因此,“”在子表达式(月)里表示每个月的含义,“”在子表达式(天(星期))表示星期的每一天

    “/”字符用来指定数值的增量

    例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟

    在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样

    “?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值

    当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”

    “L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写

    但是它在两个子表达式里的含义是不同的。

    在天(月)子表达式中,“L”表示一个月的最后一天

    在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT

    如果在“L”前有具体的内容,它就具有其他的含义了

    例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五

    注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题

    字段 允许值 允许的特殊字符

    秒 0-59 , - * /

    分 0-59 , - * /

    小时 0-23 , - * /

    日期 1-31 , - * ? / L W C

    月份 1-12 或者 JAN-DEC , - * /

    星期 1-7 或者 SUN-SAT , - * ? / L C #

    年(可选) 留空, 1970-2099 , - * /

    2)Cron表达式范例:

    每隔5秒执行一次:*/5 * * * * ?
    
    每隔1分钟执行一次:0 */1 * * * ?
    
    每天23点执行一次:0 0 23 * * ?
    
    每天凌晨1点执行一次:0 0 1 * * ?
    
    每月1号凌晨1点执行一次:0 0 1 1 * ?
    
    每月最后一天23点执行一次:0 0 23 L * ?
    
    每周星期天凌晨1点实行一次:0 0 1 ? * L
    
    在26分、29分、33分执行一次:0 26,29,33 * * * ?
    
    每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
    
    展开全文
  • 定时任务cron表达式详解

    万次阅读 多人点赞 2018-05-18 11:04:35
    cron表达式顺序秒分钟小时日期月份星期年(可选)取值0-590-590-231-30(31)1-121-7允许特殊字符, - * /, - * /, - * /, - * / ? L W C, - * /, - * / L # C1970-2099, - * /字段含义*:代表所有可能的值-:指定范围,:...

    cron表达式

    顺序
    分钟
    小时
    日期
    月份
    星期
    年(可选)
    取值
    0-59
    0-59
    0-23
    1-30(31)
    1-12
    1-7
     
    允许特殊字符
    , - * /
    , - * /
    , - * /
    , - * / ? L W C
    , - * /
    , - * / L # C
    1970-2099 , - * /

    字段含义

    *:代表所有可能的值
    -:指定范围
    ,:列出枚举  例如在分钟里,"5,15"表示5分钟和20分钟触发
    /:指定增量  例如在分钟里,"3/15"表示从3分钟开始,没隔15分钟执行一次
    ?:表示没有具体的值,使用?要注意冲突
    L:表示last,例如星期中表示7或SAT,月份中表示最后一天31或30,6L表示这个月倒数第6天,FRIL表示这个月的最后一个星期五
    W:只能用在月份中,表示最接近指定天的工作日
    #:只能用在星期中,表示这个月的第几个周几,例如6#3表示这个月的第3个周五
     
    示例
    0 * * * * ? 每1分钟触发一次
    0 0 * * * ? 每天每1小时触发一次
    0 0 10 * * ? 每天10点触发一次
    0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
    0 30 9 1 * ? 每月1号上午9点半
    0 15 10 15 * ? 每月15日上午10:15触发
    */5 * * * * ? 每隔5秒执行一次
    0 */1 * * * ? 每隔1分钟执行一次
    0 0 5-15 * * ? 每天5-15点整点触发
    0 0/3 * * * ? 每三分钟触发一次
    0 0 0 1 * ?  每月1号凌晨执行一次

     

    对照上面的字段含义写自定义的cron时间表达式基本就ok了,写完后可以到 http://cron.qqe2.com/ 验证下。

    注意:"0 0/50 * * * ?"这个表达式很多人会认为是每隔50分钟执行,实际不是,会每个小时的50分、60分钟跑一次,例如1:50,2:00,2:50,3:00……,这个千万别搞错了,我吃过这个亏。

    引申阅读: 分布式环境保证定时任务的幂等性  Java定时器(二)之Spring定时任务、Quartz实现

    展开全文
  • liunx定时任务——cron

    2018-11-27 09:22:26
    cron:是一个进程。可以让linux周期性的执行某一个命令。 使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令 crontab命令:设置linux周期性的执行某一个命令 -u:设置某一个用户的周期性任务—...

    cron:是一个进程。可以让linux周期性的执行某一个命令。

    crontab命令:设置在指定的时间执行一个shell脚本或者一系列Linux命令

    -u:设置某一个用户的周期性任务—root权限
    -e:编辑crontab的工作内容
    -l:查阅crontab的工作内容
    -r:移除所有的crontab的工作内容,会清空文件,若仅要移除一项,请用-e去编辑
    

    crontab基本格式 :

        *  *  *  *  *  command
        分  时  日  月  周  命令   
    
    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~7(0,7表示星期天)
    第6列要运行的命令(shell脚本或者Linux命令)
    

    crontab配置举例:

    */1 * * * * command              //每1分钟执行一次
    15,30,45 * * * * command        //每小时的15,30,45分钟执行
    10,50 7-10 * * * command        //7点到10点的第10,50分钟执行
    20,40 7-11 /1 * * command      //每隔一天的7点的第20和第40分钟执行
    25,50 7-11 * * 1 command        //每隔一周的7点的第25和第50分钟执行
    30 3 * * * command              //每天的3:30执行
    30 3 1,10,20 * * command        //每月1,10,20日的3:30执行
    30 3 * * 6,7 command            //每周六,周日的3:30执行
    */15 9-16 * * * command          //每天9点到16点之间每隔15分钟执行
    

    备注:

    *:代表任何时候
    ,:代表分隔字段
    -:代表一段时间范围内
    /n:n代表数字,也就是每隔n单位间隔的意思 开头需要使用*/n,否则会报错
    不要使用vim等编辑软件编辑crontab文件,有可能因为格式不匹配,无法使用,使用-e编辑
    

    查看cron日志:

    tail /var/log/cron
    
    展开全文
  • linux下的cron服务详解

    千次阅读 2016-07-27 15:40:26
     一)cron服务的介绍 cron是Linux系统下一个自动执行指定任务的程序. cron服务要通过命令启动和停止,在Linux上可以通过/etc/init.d/crond脚本启动或停止. ...1)/var/spool/cron目录下cron文件
    

    一)cron服务的介绍

    cron是Linux系统下一个自动执行指定任务的程序.

    cron服务要通过命令启动和停止,在Linux上可以通过/etc/init.d/crond脚本启动或停止.

    二)cron的配置方式

    设置cron有两种方式,也就是编辑/var/spool/cron目录下文件和编辑/etc/crontab配置文件.

    1)/var/spool/cron目录下cron文件

    我们可以通过crontab命令来编辑操作/var/spool/cron目录下cron文件,当然我们也可以直接编辑/var/spool/cron目录下的配置文件.

    例如,root用户的cron就是/var/spool/cron/root

    cat /var/spool/cron/root

    *:1 * * * * stat /etc/passwd >> /tmp/1

    如果用crontab -e -u root就是编辑/var/spool/cron/root文件.

    如果用crontab -l -u root 就是查看/var/spool/cron/root文件.

    如果用crontab -r -u root就是删除/var/sppol/cron/root文件.

    2)/etc/crontab

    /etc/crontab只有root用户可以编辑,权限如下:

    ls -l /etc/crontab

    -rw-r--r--. 1 root root 526 Mar 4 19:30 /etc/crontab

    /etc/crontab配置文件默认内容如下:

    SHELL=/bin/bash

    PATH=/sbin:/bin:/usr/sbin:/usr/bin

    MAILTO=root

    HOME=/

    # run-parts

    01 * * * * root run-parts /etc/cron.hourly

    02 4 * * * root run-parts /etc/cron.daily

    22 4 * * 0 root run-parts /etc/cron.weekly

    42 4 1 * * root run-parts /etc/cron.monthly

    前四行是用来配置 cron 任务运行环境的变量.

    SHELL 变量的值告诉系统要使用哪个 shell 环境(在这个例子里是 bash shell)

    PATH 变量定义用来执行命令的路径.

    cron 任务的输出被邮寄给 MAILTO 变量定义的用户名如果 MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出.

    HOME 变量可以用来设置在执行命令或脚本时使用的主目录.

    注:

    我们可以自定义自己的变量,让crontab配置文件中的程序使用.

    例如:

    vi /etc/crontab

    加载如下变量定义:

    NAME="Chenkuo"

    */1 * * * * root /bin/echo "$NAME" > /tmp/2

    重启crond服务,如下:

    /etc/init.d/crond restart

    一分钟后,查看/tmp/2文件,如下:

    cat /tmp/2

    Chenkuo

    01 * * * * root run-parts /etc/cron.hourly

    02 4 * * * root run-parts /etc/cron.daily

    22 4 * * 0 root run-parts /etc/cron.weekly

    42 4 1 * * root run-parts /etc/cron.monthly

    使用 run-parts 脚本来执行 /etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly和/etc/cron.monthly目录中的脚本.

    01 * * * * root run-parts /etc/cron.hourly表示每小时的第1分钟执行/etc/cron.hourly中的脚本.

    02 4 * * * root run-parts /etc/cron.daily表示每天4点2分钟时执行/etc/cron.daily中的脚本.

    22 4 * * 0 root run-parts /etc/cron.weekly表示每周的周日4点22分执行/etc/cron.weekly中的脚本.

    42 4 1 * * root run-parts /etc/cron.monthly表示每月的1号早上4点22分执行/etc/cron.monthly中的脚本.

    run-parts是crontabs软件包下的脚本.

    rpm -qf /usr/bin/run-parts

    crontabs-1.10-32.1.el6.noarch

    注:

    每次修改/etc/crontab,都要重启crond服务,因为只有重启服务时才会重新加载/etc/crontab文件.

    三)cron运行的最小单位是分钟

    cron服务运行的最小单位是分钟,也就是每分钟cron服务加载一次/var/spool/cron中的配置文件,所以我们不能实现每秒钟运行一次cron中的配置项.

    四)cron配置项的写法

    星号(*)可以用来代表所有有效的值.例如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令.

    整数间的短线(-)指定一个整数范围,例如,1-4 意味着整数 1,2,3,4.

    用逗号(,)隔开的一系列值指定一个列表.例如3, 4, 6, 8 标明这四个指定的整数.

    正斜线(/)可以用来指定间隔频率.在范围后加上 / 意味着在范围内可以跳过 integer.譬如,0-59/2 可以用来在分钟字段定义每两分钟,间隔频率值还可以和星号一起使用.例如*/3 的值可以用在月份字段中表示每三个月运行一次任务.

    配置格式如下:

    *  *  *  *  *  command

    分 时 日 月 周 命令

    注:

    第1列表示分钟0~59 每分钟用*或者 */1表示

    第2列表示小时0~23

    第3列表示日期1~31

    第4列表示月份1~12

    第5列标识号星期0~6(0表示星期天)

    第6列要运行的命令

    /etc/crontab的配置文件与crontab中进行编辑的配置文件格式有所区别,/etc/crontab的配置文件可以指定用哪个用户去执行程序,例如:

    */1 * * * * chenkuo /bin/echo "$NAME" > /tmp/5

    表示使用用户chenkuo去执行/bin/echo "$NAME" > /tmp/5.所以/tmp/5的owner就应该是chenkuo.

    ls -l /tmp/5

    -rw-r--r--. 1 chenkuo chenkuo 8 Mar 17 21:09 /tmp/5

    而用crontab -e进行编辑的/var/spool/cron/中的cron文件就不能实现指定用户的功能.所以说/etc/crontab是超级用户来配置调整的,而crontab -e是针对用户自定义的cron配置.

    五)cron的例子

    30 21 * * * /etc/init.d/httpd restart

    上面的例子表示每晚的21:30重启apache.

    45 4 1,10,22 * * /etc/init.d/httpd restart

    上面的例子表示每月1,10,22日的4 : 45重启apache.

    10 1 * * 6,0 /etc/init.d/httpd restart

    上面的例子表示每周六,周日的1 : 10重启apache.

    0,30 18-23 * * * /etc/init.d/httpd restart

    上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache.

    0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

    上面的例子表示每星期六的11 : 00 pm重启apache。

    * */1 * * * /etc/init.d/httpd restart

    每一小时重启apache

    * 23-7/1 * * * /etc/init.d/httpd restart

    晚上11点到早上7点之间,每隔一小时重启apache

    0 11 4 * mon-wed /etc/init.d/httpd restart

    每月的4号与每周一到周三的11点重启apache

    0 4 1 jan * /etc/init.d/httpd restart

    一月一号的4点重启apache

    展开全文
  • SpringQuartz定时任务的cron表达式书写

    万次阅读 2018-09-17 15:09:28
    SpringQuartz定时任务的使用,要配置这个定时任务什么时候执行,周期是多少,周期内执行多少次,这个都是cron表达式来控制的,下面详解一下这个cron表达式。 一、先来举些例子 【1】0 0 10,14,16 * * ? 每天上午10...
  • linux中的cron表达式

    千次阅读 2018-06-25 18:31:35
    网上一大堆的介绍都是关于spring中的quartz等表达式。但是liunx中的表达式貌似只有5个。故好不容易找到关于Linux中的cron表达式的文章,所以转载了: 原文:...名词解释:cron是服务名称,cr...
  • Cron表达式范例: 每隔5秒执行一次:*/5 * * * * ? 每隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 每天凌晨1点执行一次:0 0 1 * * ? 每月1号凌晨1点执行一次:0 0 1 1 * ? ...
  • cron

    千次阅读 2019-02-28 09:47:46
    字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 或者 SUN-SAT , - * ? / L C # 年(可选) 留空, 1970-2099 ,...
  • cron 表达式0 0/10 * * * 与 0 */10 * * *的区别

    万次阅读 热门讨论 2018-06-08 17:17:36
    前段时间使用cron表达式,发现配置每x分钟执行的时候。第一次执行时间,总是不太对。第二次的执行时间是正确的。 cron 0 */7 * * * # 启动时间 xx:40:00 # 第一次执行时间 xx:42:00 # 第二次执行时间 xx:42:00 ...
  • cron 详解

    2020-10-28 13:21:04
    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month DayofWeek Year或 Seconds Minutes Hours DayofMonth ...
  • cron

    千次阅读 2009-03-24 09:47:00
    cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:/sbin/service crond start //启动服务 /sbin/service ...
  • Cron

    2018-01-16 17:26:23
    Installation ...Add "liebig/cron": "dev-master" to your /path/to/laravel/composer.json file at the "require": section (Find more about composer at http://getcomposer.org/)Run the compose
  • cron

    2012-06-07 13:15:01
    Cron is driven by a crontab (cron table) file, a configuration file that specifies shell commands to run periodically on a given schedule. The crontab files are stored where the lists of
  • cron表达式详解,cron表达式写法,cron表达式例子

    万次阅读 多人点赞 2018-01-03 12:55:09
    先了解每个位置代表的含义,在了解每个位置允许的范围,以及一些特殊写法,还有常用的案例,足够你掌握cron表达式
  • linux--Cron

    千次阅读 2019-08-17 06:18:37
    linux--Cron123参考 1 2 3 参考 1、 2、 3、
  • cron 一个小时执行一次的表达式

    万次阅读 2018-09-17 08:54:08
    0 0 * * * ? cron 表达式生成网站: http://cron.qqe2.com/ 复制到浏览器地址栏访问 http://cron.qqe2.com/
  • cron 定时执行详解

    万次阅读 2012-12-10 12:01:35
    linux cron 下的定时执行工具使用技巧 来源:互联网 作者:佚名 时间:04-13 11:18:03 【大 中 小】 点评:cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron ...
  • pg_cron

    千次阅读 2018-11-12 10:29:12
    pg_cron postgresql 本身没有类似 oracle schedule、job的功能,如果没有集中调度中心的话,运行job基本依赖操作系统的crontab。pg_cron 是 citusdata 公司实现的 extension,看名字基本就类似操作系统的crontab。 ...
  • cron表达式详解

    千次阅读 2016-06-29 18:57:57
    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month DayofWeek Year或 Seconds Minutes Hours DayofMonth ...
  • 参见http://gitee.com/xxssyyyyssxx/cron-hms 我们项目中一般会有很多的定时任务,我们怎么知道这些定时任务是否正常执行了呢?一个基本的想法是,在任务执行前保存一条记录,任务执行后更新此记录的结束时间和...

空空如也

1 2 3 4 5 ... 20
收藏数 119,632
精华内容 47,852
关键字:

cron