El comando en crontab se ejecuta con /bin/sh
por lo que puede usar la expansión aritmética para calcular si el minuto actual módulo 25 es igual a cero:
*/5 * * * * [ $(( $(date +\%s) / 60 \% 25 )) -eq 0 ] && your_command
cron
ejecutará esta entrada completa cada 5 minutos, pero solo si el minuto actual (en minutos desde la época) módulo 25 es igual a cero, ejecutará your_command
.
Como han señalado otros, 1 día no es divisible por 25 minutos, por lo que esto no causará your_command
ejecutarse a la misma hora todos los días, pero lo hará correr cada 25 minutos.
Tu mejor apuesta es correr a los 20 o 30 minutos.
Lo mejor que puede hacer es activar cada 5 minutos, y luego mantener un conteo interno o una marca de tiempo, y ejecutar cada 5 activaciones, o si han transcurrido 25 minutos desde la última ejecución.
Más complicado sería calcular las horas correctas de un día, a partir de la medianoche, y aceptar el error al final del día. Esto implicaría duplicar la entrada crontab a las diferentes horas.
Más complicado que eso sería calcular los tiempos de un mes completo, lo que implicaría muchas copias de la entrada crontab para cubrir las diferentes combinaciones.
Finalmente, podría implementar su propio daemon siempre activo y hacer que haga la programación.
No tengo experiencia directa con él, pero fcron parece hacer lo que quieras de forma inmediata. Según su documentación puedes especificar frecuencias:
# 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