Příkaz v crontab se provede s /bin/sh
takže můžete použít aritmetické rozšíření k výpočtu, zda se aktuální minutový modulo 25 rovná nule:
*/5 * * * * [ $(( $(date +\%s) / 60 \% 25 )) -eq 0 ] && your_command
cron
spustí celý tento záznam každých 5 minut, ale pouze pokud je aktuální minuta (v minutách od epochy) modulo 25 rovna nule, spustí se your_command
.
Jak poukázali jiní, 1 den není dělitelný rovnoměrně 25 minutami, takže to nezpůsobí your_command
běžet každý den ve stejnou dobu, ale bude spustit každých 25 minut.
Nejlepším řešením je běžet 20 minut nebo 30 minut.
Dalším nejlepším řešením by mohlo být spouštění každých 5 minut a poté ponechat interní počet nebo časové razítko a spustit každé páté spuštění nebo pokud od posledního spuštění uplynulo 25 minut.
Složitější by bylo zjistit správné časy na den počínaje půlnocí a přijmout chybu na konci dne. To by zahrnovalo duplikování záznamu crontab do různých hodin.
Složitější než to by bylo vypočítat časy na celý měsíc, což by vyžadovalo mnoho kopií záznamu crontab k pokrytí různých kombinací.
Konečně byste mohli implementovat svého vlastního vždy na démona a nechat to provést plánování.
Nemám s tím přímou zkušenost, ale zdá se, že fcron po vybalení dělá, co chcete. Podle jeho dokumentace můžete určit frekvence:
# Get our mails every 30 minutes
@ 30 getmails -all
# make some security tests every 48 hours of system up time,
# force a mail to be sent to root even if there is no output
@mailto(root),forcemail 2d /etc/security/msec/cron-sh/security.sh