How to do a cron job every 72 minutes

后端 未结 7 1025
时光取名叫无心
时光取名叫无心 2020-12-06 10:18

How would I get a cron job to run every 72 minutes? Or some not so pretty number like that?

相关标签:
7条回答
  • 2020-12-06 10:51

    You'll need to set exactly 20 tasks for this - i.e. set one at 00:00, next one at 01:12, next one at 02:24, etc.

    20 iterations make a full day.

    Unfortunately, this is the only way to do it, as cron tasks are set up in a fixed schedule beforehand instead of being run, say, "after X minutes the last task was executed".

    0 讨论(0)
  • 2020-12-06 10:56

    You cannot directly do this from cron/crontab.

    Cron jobs are run on a specific schedule, not on a specific interval.

    One alternative would be to work out a schedule that approximated your "every 72 minutes" by running at midnight, 1:12, 2:24, 3:36, ..., and stretching it out to approximate hitting up at midnight. Your crontab file could specify all of these times as times to execute.

    Another alternative would be to have a separate application handle the scheduling, and fire your application.

    0 讨论(0)
  • 2020-12-06 10:58

    Since cron runs jobs time-based, not interval-based, there's no blindingly simple way to do it. However, although it's a bit of a hack, you can set up multiple lines in crontab until you find the common denominator. Since you want a job to run every 72 minutes, it must execute at the following times:

    • 00:00
    • 01:12
    • 02:24
    • 03:36
    • 04:48
    • 06:00
    • 07:12
    • ...

    As you can see, the pattern repeats every 6 hours with 5 jobs. So, you will have 5 lines in your crontab:

    0  0,6,12,18  * * * command
    12 1,7,13,19  * * * command
    24 2,8,14,20  * * * command
    36 3,9,15,21  * * * command
    48 4,10,16,22 * * * command
    

    The other option, of course, is to create a wrapper daemon or shell script that executes and sleeps for the desired time until stopped.

    0 讨论(0)
  • 2020-12-06 10:59

    Don't use cron...

    #!/bin/sh
    while [ true ] 
    do
         sleep 4320
         echo "Put your program here" &
    done
    
    0 讨论(0)
  • 2020-12-06 11:00

    Use at (man at). Have your app or startup script calculate a startup time 72 minutes in the future and schedule itself to run again before it starts working.

    Available on windows xp and vista too.

    Here's an example for gnu/linux: at -f command.sh now + 72 minutes

    0 讨论(0)
  • 2020-12-06 11:00

    You could always take the approach of triggering cron every minute, and having your script exit out immediately if it's been run more recently than 72 minutes ago.

    0 讨论(0)
提交回复
热议问题