精华内容
下载资源
问答
  • 2021-05-15 23:45:57

    一.安装 crontabs服务并设置开机自启:yum install crontabs

    systemctl enable crond

    systemctl start crond123

    二.设置用户自定义定时任务:vi /etc/crontab

    可以看到:# Example of job definition:# .---------------- minute (0 - 59)# |  .------------- hour (0 - 23)# |  |  .---------- day of month (1 - 31)# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# |  |  |  |  |# *  *  *  *  * user-name  command to be executed

    即:分钟(0-59) 小时(0-23) 日(1-31) 月(11-12) 星期(0-6,0表示周日) 用户名 要执行的命令1

    每隔30分钟root执行一次updatedb命令:*/30 * * * * root updatedb1

    每天早上5点定时重启系统:0 5 * * * root reboot1

    每隔三秒执行一次/home/somedir目录下的scripts.sh脚本:## For excuting scripts.sh every 3 seconds##on 2014-10-15*/1 * * * *  /home/somedir/scripts.sh

    */1 * * * * sleep 3 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 6 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 9 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 12 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 15 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 18 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 21 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 24 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 27 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 30 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 33 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 36 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 39 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 42 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 45 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 48 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 51 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 54 &&  /home/somedir/scripts.sh

    */1 * * * * sleep 57 &&  /home/somedir/scripts.sh123456789101112131415161718192021

    三.保存生效:#加载任务,使之生效crontab /etc/crontab#查看任务crontab -l

    更多相关内容
  • '2018-09-15 12:30', 15, "12:00")) 输出结果: 解释说明: beginDate 为 定时任务 开始执行日期 endDate 为定时任务 结束执行日期 shu_day 为 每月几号 执行定时任务 schedule_time 为定时任务中每次执行的...

    def mouthRange(beginDate, endDate, shu_day, schedule_time):

    dates = []

    new_mouths = []

    dt = datetime.datetime.strptime(beginDate, "%Y-%m-%d %H:%M")

    date = beginDate[:]

    while date <= endDate:

    dates.append(date)

    dt = dt + datetime.timedelta(1)

    date = dt.strftime("%Y-%m-%d %H:%M")

    da_mouth = []

    for i in dates:

    if i[:7] not in da_mouth:

    da_mouth.append(i[:7])

    # schedule_time = "17:20"

    # shu_day = 1

    # current_time = datetime.datetime.now()

    # current_time = current_time.strftime("%Y-%m-%d %H:%M")

    # current_time = datetime.datetime.strptime(current_time, "%Y-%m-%d %H:%M")

    # big_time = datetime.datetime.strptime(beginDate, "%Y-%m-%d %H:%M")

    # print(current_time)

    # print(big_time)

    # if current_time > dt:

    # print("12jpkp")

    # da_mouth = da_mouth[1:]

    first_mouth = int(beginDate[8:10])

    print(beginDate[8:10])

    if first_mouth <= shu_day:

    new_mouths.append(da_mouth[0] + "-" +str(shu_day) + " "+ schedule_time)

    for i in da_mouth[1:]:

    days = calendar.monthrange(int(i[:4]), int(i[5:7]))[1]

    if shu_day < 29:

    new_mouths.append(i+"-"+str(shu_day).zfill(2) +" "+schedule_time)

    if shu_day == 29:

    if days >= 29:

    new_mouths.append(i+"-"+str(shu_day) +" "+schedule_time)

    else:

    new_mouths.append(i+"-"+"28" +" "+schedule_time)

    elif shu_day == 30:

    if days == 28:

    new_mouths.append(i+"-"+str(days) +" "+schedule_time)

    elif days== 29 :

    new_mouths.append(i+"-"+"29" +" "+schedule_time)

    elif days >= 30:

    new_mouths.append(i+"-"+"30" +" "+schedule_time)

    elif shu_day == 31:

    if days == 28:

    new_mouths.append(i+"-"+str(days) +" "+schedule_time)

    elif days== 29 :

    new_mouths.append(i+"-"+"29" +" "+schedule_time)

    elif days == 30:

    new_mouths.append(i+"-"+"30" +" "+schedule_time)

    elif days == 31:

    new_mouths.append(i+"-"+"31" +" "+schedule_time)

    else:

    pass

    last_time = datetime.datetime.strptime(new_mouths[-1], "%Y-%m-%d %H:%M")

    endDate_time = datetime.datetime.strptime(endDate, "%Y-%m-%d %H:%M")

    if last_time > endDate_time:

    new_mouths = new_mouths[:-1]

    return new_mouths

    print(mouthRange('2018-08-15 11:00', '2018-09-15 12:30', 15, "12:00"))

    输出结果:

    解释说明:

    beginDate 为 定时任务 开始执行日期

    endDate   为定时任务  结束执行日期

    shu_day  为 每月几号 执行定时任务

    schedule_time  为定时任务中每次执行的时间

    此代码也可以找到每月的最后一天,也就是每月最后一天执行,包含特殊月份的处理

    展开全文
  • linux crontab 命令,最小的执行时间是分钟。如需要在小于分钟内重复执行,可以有两方法实现。

    linux crontab 命令,最小的执行时间是一分钟。如需要在小于一分钟内重复执行,可以有两个方法实现。

    cron 各项的描述

    以下是 crontab 文件的格式:

    {minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}

    o minute: 区间为 0 – 59

    o hour: 区间为0 – 23

    o day-of-month: 区间为0 – 31

    o month: 区间为1 – 12. 1 是1月. 12是12月.

    o day-of-week: 区间为0 – 7. 周日可以是0或7.

    1.使用延时来实现每n秒执行

    创建一个php做执行动作,非常简单,就是把当前时间写入log。

    file_put_contents('/home/fdipzone/php/crontab/run.log', date('y-m-d h:i:s')."\r\n", file_append);

    ?>

    crontab -e 输入以下语句,然后 :wq 保存退出。

    * * * * * php /home/fdipzone/php/crontab/tolog.php

    * * * * * sleep 10; php /home/fdipzone/php/crontab/tolog.php

    * * * * * sleep 20; php /home/fdipzone/php/crontab/tolog.php

    * * * * * sleep 30; php /home/fdipzone/php/crontab/tolog.php

    * * * * * sleep 40; php /home/fdipzone/php/crontab/tolog.php

    * * * * * sleep 50; php /home/fdipzone/php/crontab/tolog.php

    使用 tail -f 查看执行情况,可以见到log每10秒被写入一条记录。

    fdipzone@ubuntu:~$ tail -f /home/fdipzone/php/crontab/run.log

    2014-03-31 21:47:01

    2014-03-31 21:47:11

    2014-03-31 21:47:21

    2014-03-31 21:47:31

    2014-03-31 21:47:41

    2014-03-31 21:47:51

    2014-03-31 21:48:01

    原理:通过延时方法 sleep n  来实现每n秒执行。

    注意:

    60必须能整除间隔的秒数(没有余数),例如间隔的秒数是2,4,6,10,12等。

    如果间隔的秒数太少,例如2秒执行一次,这样就需要在crontab 加入60/2=30条语句。不建议使用此方法,可以使用下面介绍的第二种方法。

    2.编写shell脚本实现 推荐

    crontab.sh

    #!/bin/bash

    step=2 #间隔的秒数,不能大于60

    for (( i = 0; i < 60; i=(i+step) )); do

    $(php '/home/fdipzone/php/crontab/tolog.php')

    sleep $step

    done

    exit 0

    crontab -e 输入以下语句,然后:wq 保存退出。

    # m h dom mon dow command

    * * * * * /home/fdipzone/php/crontab/crontab.sh

    使用 tail -f 查看执行情况,可以见到log每2秒被写入一条记录。

    fdipzone@ubuntu:~/php/crontab$ tail -f run.log

    2014-03-31 22:23:01

    2014-03-31 22:23:03

    2014-03-31 22:23:06

    2014-03-31 22:23:08

    2014-03-31 22:23:10

    2014-03-31 22:23:12

    2014-03-31 22:23:14

    2014-03-31 22:23:16

    2014-03-31 22:23:18

    2014-03-31 22:23:20

    2014-03-31 22:23:22

    2014-03-31 22:23:25

    2014-03-31 22:23:27

    2014-03-31 22:23:29

    2014-03-31 22:23:31

    2014-03-31 22:23:33

    2014-03-31 22:23:35

    2014-03-31 22:23:37

    2014-03-31 22:23:39

    2014-03-31 22:23:41

    2014-03-31 22:23:44

    2014-03-31 22:23:46

    2014-03-31 22:23:48

    2014-03-31 22:23:50

    2014-03-31 22:23:52

    2014-03-31 22:23:54

    2014-03-31 22:23:56

    2014-03-31 22:23:58

    2014-03-31 22:24:00

    原理:在sh使用for语句实现循环指定秒数执行。

    注意:如果60不能整除间隔的秒数,则需要调整执行的时间。例如需要每7秒执行一次,就需要找到7与60的最小公倍数,7与60的最小公倍数是420(即7分钟)。

    则 crontab.sh step的值为7,循环结束条件i<420, crontab -e可以输入以下语句来实现

    # m h dom mon dow command

    */7 * * * * /home/fdipzone/php/crontab/crontab.sh

    备注:crontab -l 显示当前用户的crontab文件内容。
    * * * * *每分钟执行一次

    cron表达式详解:    

    一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。
          按顺序依次为:

    10~59
    2分钟0~59
    3小时0~23
    40~31
    50~11
    6星期1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT
    7年份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 * * ? 20222022年的每天上午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 2022-20252022年至2025年的每月的最后一个星期五上午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"前有具体的内容,它就具有其他的含义了。例如:"6L"表示这个月的倒数第6天
           注意:在使用"L"参数时,不要指定列表或范围,因为这会导致问题。
           W:  字符代表着平日(Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。大部分的商业处理都是基于工作周的,所以 W 字符可能是非常重要的。
           例如:日域中的 15W 意味着 "离该月15号的最近一个平日。"假如15号是星期六,那么 trigger 会在14号(星期五)触发,因为星期四比星期一离15号更近。
           C:  代表"Calendar"的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。
           例如:5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天。

    字段允许值允许的特殊字符
    0-59, - * /
    0-59, - * /
    小时0-23, - * /
    日期1-31, - * ? / L W C
    月份1-12 或者 JAN-DEC, - * /
    星期1-7 或者 SUN-SAT, - * ? / L C #
    年(可选)留空, 1970-2099, - * /
    展开全文
  • 关于Spring定时任务每月最后天 corn表达式使用L 报错 可以使用如下解决办法: 首先,每最后天可能为(28,29,30,31)这几天只需要在这几天调度程序,在程序中判断是否为最后天,如果是则执行需要执行的代码...

    关于Spring定时任务每月最后一天 corn表达式使用L 报错 可以使用如下解决办法:

    首先,每月最后一天可能为(28,29,30,31)这几天只需要在这几天调度程序,在程序中判断是否为最后一天,如果是则执行需要执行的代码块

     

    展开全文
  • linux 每天执行任务计划

    千次阅读 2021-05-18 14:21:03
    (1)at命令假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了。设置at命令很简单,指示定运行的时间,那么就会在哪个时候运行。at类似打印 进程,会把任务放到/var/spool/at目录中,到指定时间...
  • 概述前不久我们梳理了Linux中的计划任务—Crontab调度重复执行任务,但是有些场景我们只是需要执行一次执行完就结束任务该怎么办呢? 这里我们要用到linux提供的at/batch命令。本篇博文我们将从如下几要点来...
  • 隔十秒执行一次* * * * * sleep 10; /bin/php /www/web/test.php* * * * * sleep 20; /bin/php /www/web/test.php* * * * * sleep 30; /bin/php /www/web/test.php* * * * * sleep 40; /bin/php /www/web/test.php...
  • 本文介绍如何在Linux平台下5、10或15分钟运行一次cron命令,即执行一次定时任务(Cron Job)。前言Cron job是按指定间隔执行任务,可以将任务安排为按分钟,小时,每月的某天,某,某周的某天或它们的任意组合...
  • linux 定时任务小时执行一次

    万次阅读 2020-09-14 13:42:07
    小时执行一次为 0 */1 * * * 这种写法。 注意的是,很容易粗心写成 * */1 * * * 这种写法,代表小时每一分钟都执行一次 其他例子: crontab分钟定时执行: */1 * * * * service mysqld restart //隔...
  • Linux任务计划的使用 10秒执行一次

    千次阅读 2019-11-05 14:46:10
    在LINUX中,周期执行任务一般由cron这守护进程来处理[ps -ef|grep cron]。cron读取一个或多配置文件,这些配置文件中包含了命令行及其调用时间。 cron的配置文件称为“crontab”,是“cron table”的...
  • 实验目的使用cron定时执行一个简单的shell的监控脚本,将结果重定向到一个文本文件中。cron用途:按照设置的时间间隔为用户反复执行项固定的系统任务使用 crontab 命令–编辑计划任务:crontab -e [-u 用户名]–...
  • Linux任务计划和周期性任务执行

    千次阅读 2021-05-11 23:45:13
    linux计划任务有两类at:未来某个时间点仅执行一次任务就结束的指令,at指令执行时必须要有atd这服务支持。crontab:可以以时间单位为分钟,小时,每天,每周,每月,每年等循环执行任务。单一任务at介绍:语法...
  • } //第一次执行定时任务的时间及隔1分钟执行一次 private static final long PERIOD_DAY = 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR, 12); ...
  • 1.使用at命令调用atd进程设置在某个特定的时间,执行一次任务 2.使用crontab命令调用crond进程,设置按固定的周期(如每天、每周等)重复执行预先计划好的任务 二、一次计划任务设定: 前提:service atd...
  • crontab分钟执行一次任务

    万次阅读 2020-04-18 17:32:18
    在/home/下面写了一个test.sh #!/bin/sh echo hello > /home/hello.txt 然后在crontab -e中设置了 */1 * * * * /home/a.sh 为何等了好几分钟,home下面还是没有hello.txt呢? 指定一下用什么运行 */1 * *...
  • 文件中是通过 5 “*”来确定命令或任务执行时间的,这 5 “*”的具体含义如表 2 所示。 在时间表示中,还有一些特殊符号需要学习,如表 3 所示。 当“crontab -e”编辑完成之后,一旦保存退出,那么这...
  • 定时任务,也叫例行性工作调度,我们需要让linux系统按我们指定的时间规则自动的处理某些作业,例如在某个时间点执行某个脚本,周期性的备份数据,这时候就可以制定任务计划了,任务计划分为一次性和周期性两类 ...
  • 需求:在tomcat中,每月一号、每日、分钟自动执行指定的任务。 开发环境: java + tomcat 实现思路:在tomcat中,添加监听器,在监听器中设置定时任务。 1.监听: 新建监听:新建类,implents ...
  • 每月最后天触发定时任务

    千次阅读 2020-12-15 14:19:51
    每月最后天触发定时任务
  • 10秒执行定时任务-crontab /data/crontab.sh sleep 10; /data/crontab.sh sleep 20; /data/crontab.sh sleep 30; /data/crontab.sh ...
  • CentOS7 运维 - 进程和计划任务管理程序和进程的关系查看进程信息ps查看静态的进程统计信息查看静态的进程统计信息僵尸进程动态查看进程排名信息top第行是任务队列信息第二行为进程信息第三行为CPU的信息第四行为...
  • 进程分父进程,子进程(每个程序可以创建个或多个进程) 2.怎么查看进程? 查看进程分为两种:静态查看和动态查看; 静态查看 咱们先聊静态查看; ps(ps aux; ps elf;) 选项 作用 a 显示当前终端下所有...
  • 宝塔的计划任务最低执行周期为分钟,但是我们有时需要用到按秒来执行,这可就尴尬了啊。今天傲世给大家介绍有关秒数执行的方法,并举多种例子供大家参考:1.添加计划任务任务类型选择"Shell脚本",执行周期选择N...
  • 系统中通常有些需要自动执行任务,这些任务可能段时间就要执行一次,也可能需要在指定的时间点自动执行,这些任务的自定执行必须使用任务的自动调度。JDK为简单的任务调度提供了Timer支持,单对于更复杂的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,593
精华内容 33,837
关键字:

计划任务每个月30日执行一次