My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant
1
| 14,24,36,43,51 * * * * mytask |
edit:
Eventueel iets als:
1
| 0 * * * * * sleep $[RANDOM\%59]m ; mytask |
Waar je dus sleep <random 0-59> minuten doet en dan pas je mytask uitvoert.
[ Voor 69% gewijzigd door spone op 25-06-2014 20:09 ]
i5-14600K | 32GB DDR5-6000 | RTX 5070 - MacBook Pro M1 Pro 14" 16/512
Die tweede optie heeft de kans dat de periode tussen twee executies juist langer dan een uur is. Dat wil ik dus juist zien te voorkomen.
My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant
1
| */5 * * * * [ $(( $(date +%s) / 60 % 55 )) -eq 0 ] && hierwatuittevoeren |
Zoiets dacht ik, ooit zelf in een ver grijs verleden gebruikt. Zo wordt elke 5 minuten gekeken of de unix tijd 55 minuten is opgeschoven (t.o.v. 1-1-1970 00:00.00), zo ja dan gaat ie het commando uitvoeren. Maar geen garantie.
Je privacy is voor het eerst geschonden bij de eerste echo. Daarna wordt het er de rest van je leven niet meer beter op.
My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant
Commandline FTW | Tweakt met mate
En als je elke 57 minuten loopt dan heb je niet de kans dat je dubbele data krijgt en mischien zelfs een uur mist?ATS schreef op woensdag 25 juni 2014 @ 20:19:
Nou, het lijkt me van niet. Ik kan ook wel twee keer per uur starten, maar dan krijg ik veel dubbele data in mijn database. Omdat dit continue loopt om data op te halen, wil ik voorkomen dat ik teveel onzin in de database verzamel. Hij verzamelt al genoeg data... Vandaar de vraag om "elke n minuten" te starten, in plaats van "op minuut a en b".
Die tweede optie heeft de kans dat de periode tussen twee executies juist langer dan een uur is. Dat wil ik dus juist zien te voorkomen.
Wat voor data krijg je er precies uit?
"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan
De beste oplossing is natuurlijk uitzoeken waarom je data mist.
Een alternatief is bij houden wanneer je voor het laatst data hebt ontvangen. Als dat meer dan een uur geleden is ga je proberen om te updaten. Dat blijf je regelmatig, bv iedere minuut, proberen tot het gelukt is.
This post is warranted for the full amount you paid me for it.
Een slimme oplossing, maar pas op: Deze constructie maakt gebruik van bash-specifieke interpolatie $(( )) en dit werkt niet als je default cron-shell (/bin/sh) niet bash-compatible is.Bastien schreef op woensdag 25 juni 2014 @ 20:20:
code:
1 */5 * * * * [ $(( $(date +%s) / 60 % 55 )) -eq 0 ] && hierwatuittevoeren
warning: commands will be executed using /bin/sh
Er zijn nogal wat makers van scripts die er ten onrechte van uitgaan dat bash de default shell /bin/sh is.The Debian Almquist Shell (dash) is a POSIX-compliant shell derived from ash.
Since it executes scripts faster than bash, and has fewer library dependencies (making it more robust against software or hardware failures), it is used as the default system shell on Debian systems.
Homepage: http://gondor.apana.org.au/~herbert/dash/