How would I get a cron job to run every 72 minutes? Or some not so pretty number like that?
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.
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
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".
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.
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.
Don't use cron...
#!/bin/sh
while [ true ]
do
sleep 4320
echo "Put your program here" &
done