How to do a cron job every 72 minutes

2019-01-15 07:28发布

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

7条回答
forever°为你锁心
2楼-- · 2019-01-15 07:41

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

查看更多
贪生不怕死
3楼-- · 2019-01-15 07:42

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.

查看更多
霸刀☆藐视天下
4楼-- · 2019-01-15 07:44

Uh I know this is long overdue, but I was looking at some scheduling issues and saw this question.

Just do this in your crontab

*/72 * * * * /home/script.sh

查看更多
Anthone
5楼-- · 2019-01-15 07:59

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.

查看更多
家丑人穷心不美
6楼-- · 2019-01-15 08:03

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.

查看更多
成全新的幸福
7楼-- · 2019-01-15 08:05

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".

查看更多
登录 后发表回答