Sintaksa crona je 50 % "tisto, kar piše v prvi vrstici priročnika" in 50 % nejasnih trikov, ki jih je vedno treba poiskati na Googlu. To je referenčna kuharska knjiga z najpogostejšimi vzorci – kopiraj-prilepi in ne razmišljaj.
Sintaksa
* * * * * command-to-execute │ │ │ │ │ │ │ │ │ └─ day of week (0-7, 0 i 7 su nedjelja) │ │ │ └─── month (1-12) │ │ └───── day of month (1-31) │ └─────── hour (0-23) └───────── minute (0-59)Najpogostejši vzorci
Vsako minuto
* * * * * Pozor: to je veliko. 1440 usmrtitev na dan. Za težka opravila → uporabite flock .
Vsakih 5/15/30 minut
*/5 * * * * # svakih 5 min */15 * * * * # svakih 15 min */30 * * * * # svakih 30 minVsako uro
0 * * * * # svaki sat na :00 30 * * * * # svaki sat na :30 15 */2 * * * # svakih 2 sata na :15Določen čas dneva
0 3 * * * # svaki dan u 03:00 30 4 * * * # svaki dan u 04:30 0 9,13,17 * * * # svaki dan u 9, 13, 17hNa teden
0 4 * * 0 # nedjelja u 04:00 0 2 * * 1 # ponedjeljak u 02:00 0 5 * * 1-5 # radnim danom u 05:00 0 6 * * 6,0 # vikend u 06:00Mesečno
0 2 1 * * # prvi u mjesecu u 02:00 0 3 15 * * # 15. u mjesecu u 03:00 0 4 L * * # zadnji dan mjeseca (samo neki cron varijanti)Na leto
0 0 1 1 * # 1. siječnja u ponoć 0 0 * 6 * # svaki dan u lipnju u ponoćPosebne strune
@reboot # pri svakom restart-u servera @yearly # = 0 0 1 1 * @monthly # = 0 0 1 * * @weekly # = 0 0 * * 0 @daily # = 0 0 * * * @hourly # = 0 * * * *WordPress kroni
Standardni klic WP cron (nadomestek za WP-Cron)
*/5 * * * * cd /home/USER/public_html && /usr/local/bin/php -q wp-cron.php >/dev/null 2>&1Načrtovana naloga WP-CLI
# Daily cleanup expired transients 0 3 * * * cd /home/USER/public_html && /usr/local/bin/wp transient delete --expired >/dev/null 2>&1 # Hourly stats refresh 0 * * * * cd /home/USER/public_html && /usr/local/bin/wp eval 'do_action("hourly_stats_refresh");' >/dev/null 2>&1Razporejevalnik Laravel
Samo EN vnos v cron za Laravel:
* * * * * cd /home/USER/app && /usr/local/bin/php artisan schedule:run >> /dev/null 2>&1 Vse definicije nalog v routes/console.php :
Schedule::command('queue:prune-batches')->hourly(); Schedule::command('reports:daily')->dailyAt('06:00'); Schedule::command('reports:weekly')->weeklyOn(1, '08:00'); Schedule::command('cleanup:logs')->monthlyOn(1, '02:00'); Schedule::command('long:job')->everyFiveMinutes()->withoutOverlapping(); Schedule::command('cache:warm')->timezone('Europe/Zagreb')->at('05:30');Zaklepanje vzorca datoteke (preprečevanje prekrivanja)
Če se skript lupine lahko izvaja dlje kot interval:
* * * * * /usr/bin/flock -n /tmp/myjob.lock /home/USER/scripts/import.sh -n = neblokira. Če je zaklepanje zasedeno, se skript ne zažene.
Zabeleženi izhod cron
# U fajl 0 3 * * * /script.sh >> /home/USER/logs/cron.log 2>&1 # Samo errori 0 3 * * * /script.sh > /dev/null 2>> /home/USER/logs/cron-error.log # U syslog 0 3 * * * /script.sh 2>&1 || logger -t myjobNavadni gotchi
Spremenljivka POT
Cron okolje je minimalno. php , wp , node morda ne bodo delovali. Rešitev:
# U vrhu crontab-a: PATH=/usr/local/bin:/usr/bin:/bin # Ili koristi full path u komandi: 0 3 * * * /usr/local/bin/php /script.phpDelovni imenik
Cron se vedno zažene v domačem imeniku. Za relativne poti dodajte predpono cd :
0 3 * * * cd /home/USER/app && /usr/local/bin/php artisan ...Časovni pasovi
Cron uporablja strežnik TZ. Preverite:
timedatectl # ili 'date'Če je strežnik v UTC in želite 3:00 zjutraj po zagrebškem času → napišite cron v ekvivalentu UTC (1:00 UTC poleti, 2:00 UTC pozimi). Ali pa spremenite čas strežnika (TZ).
Neželena e-pošta
Privzeto cron pošlje izhod na e-poštni naslov MAILTO (privzeto je to lastnik računa). Če ne želite prejemati pošte:
# Per-job 0 3 * * * /script.sh > /dev/null 2>&1 # Per-crontab (na vrhu) MAILTO=""Odpravljanje napak — cron ne deluje
1. Preverite, ali je crontab shranjen
crontab -l # lista trenutni crontab crontab -e # edit2. Preverite sistemski dnevnik cron
# RHEL/Alma grep CRON /var/log/cron # Ubuntu/Debian grep CRON /var/log/syslog3. Ročno preizkusite ukaz
Kopiraj celoten ukaz iz crontaba in ga zaženi prek SSH. Če tam deluje, v cronu pa ne → 99% težava s POTJO.
4. Preverite dovoljenja
Cron skript mora biti izvedljiv: chmod +x script.sh . Uporabnik cron mora imeti bralne pravice do vseh datotek, ki se jih dotakne.
5. Preverite izhod
Začasno preusmerite izhod v datoteko:
0 3 * * * /script.sh > /tmp/cron-debug.log 2>&1 Jutri ob 4. uri zjutraj poglejte /tmp/cron-debug.log .
cPanel cron – posebne opombe
- cPanel ima urejevalnik grafičnega uporabniškega vmesnika za cron – uporabite spustne menije, da se izognete sintaktičnim napakam.
- Privzeti MAILTO je e-poštni račun. Če ga ne spremenite, boste za vsak zagon prejeli e-pošto.
- Omejitev deljenega gostovanja: pogosto najmanj 5 minut med opravili na istem računu.
- cPanel ne dovoljuje
@reboot— za to uporablja sistem cron (samo za skrbnike strežnika).
Uporabna orodja
- crontab.guru — vizualna razlaga katerega koli izraza cron.
- Healthchecks.io / Better Stack Heartbeats — spremljanje delovanja crona.
-
incron— kot cron, vendar se sproži ob dogodkih datotečnega sistema (dotik, spreminjanje, brisanje). -
systemd timer— sodobna alternativa cronu, če uporabljate distribucijo, ki temelji na systemd.
Podpora za orožje za množično uničevanje in cron
WMD nastavi standardna opravila cron za vse nove račune gostovanja WP/Laravel — wp-cron.php onemogoči + sistemski cron, rotacijo dnevnikov, preverjanje zdravja ping za kritična opravila. Stranka lahko doda svoje crone prek cPanela. Za bolj zapletene delovne procese (delavci v čakalni vrsti z nadzornikom, razporejevalnik za več strežnikov) konfiguriramo prek podpore Super fast.
Pogosta vprašanja
Ali lahko cron zažene PHP skript? Da, vedno prek php CLI (npr. /usr/local/bin/php script.php ), ne prek spletne zahteve HTTP.
Kako zagnati cron vsakih 10 sekund? Cron ne podpira granularnosti, manjše od 1 minute. Za manj kot minute uporablja dolgo delujoč proces demona z zanko sleep 10 .
Kaj pa, če strežnik pade v okvaro ravno v času crona? Opravilo se preskoči – cron nima ponovnega poskusa. Za kritična opravila uporablja čakalno vrsto s ponovnim poskusom (Laravel Horizon, Sidekiq).
Ali lahko imam cron, ki se sproži ob dogodku polnega diska? Ne gre za klasični cron. Uporabite incron ali nadzornega agenta z opozorilnim dejanjem.
Cron ne izvaja moje naloge vtičnika WP – kaj zdaj? Preverite, ali je WP-Cron onemogočen brez zunanjega sprožilca ali ali PHP CLI vidi vašo namestitev WP. Preizkusite: wp cron event list prek WP-CLI.
Potrebujete ustrezno nastavitev crona za vašo spletno stran ali aplikacijo? WMD nastavi vse standardne crone + spremljanje stanja. Stopite v stik z nami prek kontaktnega obrazca .