Perintah di crontab dijalankan dengan /bin/sh
sehingga Anda dapat menggunakan perluasan aritmatika untuk menghitung apakah modulo 25 menit saat ini sama dengan nol:
*/5 * * * * [ $(( $(date +\%s) / 60 \% 25 )) -eq 0 ] && your_command
cron
akan menjalankan seluruh entri ini setiap 5 menit, tetapi hanya jika menit saat ini (dalam menit sejak zaman) modulo 25 sama dengan nol akan menjalankan your_command
.
Seperti yang telah ditunjukkan orang lain, 1 hari tidak habis dibagi 25 menit, jadi ini tidak akan menyebabkan your_command
untuk berjalan pada waktu yang sama setiap hari, tetapi akan jalankan setiap 25 menit.
Taruhan terbaik Anda adalah berlari pada 20 menit atau 30 menit.
Cara terbaik berikutnya adalah memicu setiap 5 menit, lalu menyimpan penghitungan internal atau stempel waktu, dan menjalankan setiap pemicu ke-5, atau jika 25 menit telah berlalu sejak proses terakhir.
Yang lebih rumit adalah menentukan waktu yang tepat untuk sehari, mulai tengah malam, dan menerima kesalahan di penghujung hari. Ini akan melibatkan duplikasi entri crontab ke jam yang berbeda.
Lebih rumit dari itu adalah menghitung waktu selama sebulan penuh, yang akan melibatkan banyak salinan entri crontab untuk mencakup kombinasi yang berbeda.
Terakhir, Anda dapat mengimplementasikan always on daemon Anda sendiri, dan memintanya melakukan penjadwalan.
Saya tidak memiliki pengalaman langsung dengannya, tetapi fcron tampaknya melakukan apa yang Anda inginkan di luar kotak. Menurut dokumentasinya, Anda dapat menentukan frekuensi:
# 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