Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I don't know. It feels like with this line, the job will be run at 7, 14, 21, 28, 35, 42, 49, 56, thus, between 56 and the next 7, you will have 11 minutes interval. Not that familiar with crontab, I may be wrong here.



Correct


I am ignorant on specific time requirements on running crontabs but I always do either 6min or 10min or something which is divisible.

Are there any specific app requirements in running 7min or 17sec?


Another problem with 17 seconds is that normal cron has resolution of one minute :)


screen -dmS 17secondjob perl -e 'while(1){`run the command`;sleep 17}'


Or, simpler, use watch:

watch -n 17 -p command

Make a wrapper to run command in the background (&) if the process runtime is greater than your interval.


This will not run the `command` in 17 seconds intervals. You need to take into account the amount of time that it takes to run it.


Ok. Whilst we're being anal:

screen -dmS 17secondjob perl -Mthreads -e 'while(1){threads->create(sub{`run the command`})->detach();sleep 17}'


Or just use watch.


Cool. I was unfamiliar with this command. Looks useful.


Look for `watch -p'.


How else would you divide 60 by 7?


I think the idea is that instead of:

    7, 14, 21, 28, 35, 42, 49, 56,(11 min gap), 7, 14, etc
Crondom would run:

    7, 14, 21, 28, 35, 42, 49, 56, 3, 10, 17, 24, ..., n+7

OP correct me if I'm wrong with the intention of that bullet point.


If it's that important that a job runs at exactly 7 minute intervals, you don't want to be relying on a remote service.


You don't. You divide 60*7 by 7.


You want me to run it every hour?


You misunderstand what he's saying. Because 60 doesn't divide into 7, don't use one 60 minute cron job. Use 7 cron jobs. You could get this magical 7 minute experience over a 24 hour period by creating the following 7 jobs:

0-56/7 0-21/7 * * * Command

3-59/7 1-22/7 * * * Command

6-55/7 2-23/7 * * * Command

2-58/7 3-17/7 * * * Command

5-54/7 4-18/7 * * * Command

1-57/7 5-19/7 * * * Command

4-53/7 6-20/7 * * * Command

Of course, the last job would finish at 23:55, and the next start at 00:00 which is bad. So you'd need to do it on a per day basis. Luckily there are 7 days in the week. So you would just need to write those 7 jobs above on a per day basis. You'd end up with 49 jobs all looking similar to this:

0-56/7 0-21/7 * * Wed Command


Well, you could put multiple cron lines in. e.g. for every 8 minutes:

  0,8,16,24,32,40,48,56 0,2,4,6,8,10,12,14,16,18,20,22 * * * cmd
  4,12,20,28,36,44,52 1,3,5,7,9,11,13,15,17,19,21,23 * * * cmd
This starts to get a bit silly when the interval isn't a factor of 24 though.


I wrote a simple script to generate cron tab specs for "every X minute", and while I enjoyed using gcd and lcm in a real application; something wasn't right. 7 is a very canonical and crazy case because it takes 7 days to cycle. but even then, it doesn't work with months except for February for non leap years.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: