Il comando in crontab viene eseguito con /bin/sh
quindi puoi usare l'espansione aritmetica per calcolare se il minuto corrente modulo 25 è uguale a zero:
*/5 * * * * [ $(( $(date +\%s) / 60 \% 25 )) -eq 0 ] && your_command
cron
eseguirà l'intera voce ogni 5 minuti, ma solo se il minuto corrente (in minuti dall'epoca) modulo 25 è uguale a zero verrà eseguito your_command
.
Come altri hanno sottolineato, 1 giorno non è divisibile uniformemente per 25 minuti, quindi questo non causerà your_command
da eseguire tutti i giorni alla stessa ora, ma lo farà eseguire ogni 25 minuti.
La soluzione migliore è correre a 20 o 30 minuti.
La cosa migliore da fare potrebbe essere attivare ogni 5 minuti, quindi tenere un conteggio interno o un timestamp ed eseguire ogni 5 trigger o se sono trascorsi 25 minuti dall'ultima esecuzione.
Più complicato sarebbe calcolare gli orari corretti per un giorno, a partire da mezzanotte, e accettare l'errore alla fine della giornata. Ciò comporterebbe la duplicazione della voce crontab nelle diverse ore.
Più complicato di così sarebbe calcolare i tempi per un intero mese, il che richiederebbe molte copie della voce crontab per coprire le diverse combinazioni.
Finalmente potresti implementare il tuo demone sempre attivo e fare in modo che si occupi della pianificazione.
Non ho esperienza diretta con esso, ma fcron sembra fare quello che vuoi fuori dagli schemi. Secondo la sua documentazione è possibile specificare le frequenze:
# 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