Cron-jobs udfører det stille arbejde bag websites og servere: backups, opdateringer, importer, fakturaer, opvarmning af cache og oprydning. Når de virker, lægger ingen mærke til dem. Når de holder op, lægger ingen heller mærke til det, før en backup mangler, eller en fakturakørsel aldrig fandt sted.
Derfor er cron-jobs vigtige
Cron planlægger kommandoer, så de kører automatisk på faste tidspunkter eller med faste intervaller. Det sparer tid og fjerner risikoen for, at nogen glemmer en opgave. Det betyder også, at kritisk arbejde som natlige backups afhænger af en planlægger, der ikke siger noget til nogen, når det går galt.
Typiske årsager til, at cron-jobs ikke kører
Nedetid på serveren. Hvis serveren er slukket eller genstarter på det planlagte tidspunkt, kører jobbet ikke.
Syntaksfejl. Et forkert felt i tidsplanens udtryk kan betyde, at jobbet kører på det forkerte tidspunkt eller aldrig.
Forkert konfiguration. Forkert bruger, forkert arbejdsmappe eller et job, der er lagt i en crontab, som aldrig bliver indlæst.
Forskelle i miljøet. Cron kører med et minimalt miljø. En kommando, der virker i din shell, kan fejle under cron, fordi PATH eller andre variabler mangler.
Overlap og timeouts. Et job, der kører længere end sit interval, kan støde sammen med den næste kørsel. En maksimal kørselstid på jobbets monitor fortæller dig, når en kørsel tager for lang tid.
Sådan finder og fejlsøger du fejl
Start med logfilerne. Systemloggen (ofte /var/log/syslog eller cron-loggen på din distribution) viser, om cron startede jobbet. Jobbets eget output viser, hvad der skete derefter.
Typiske fejl og hvad de betyder:
command not found: brug absolutte stier, eller sæt PATH øverst i crontabben.
permission denied: tjek filrettighederne, og hvilken bruger jobbet kører som.
syntax error: tjek tidsplanens udtryk og citationstegnene i kommandoen.
Send outputtet til en logfil, så fejl efterlader et spor:
30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Overvågning af cron-jobs
Logfiler hjælper kun, hvis nogen læser dem. Overvågning gør en tavs fejl til en alarm. Den mest pålidelige metode er et heartbeat: Jobbet sender en forespørgsel til en overvågnings-URL, når det er færdigt. Hvis forespørgslen ikke kommer inden for den forventede tid, får du en alarm.
Med Uptimechecks cron-monitorer pinger jobbet en unik URL med GET eller POST. Monitoren tager crontabbens tidsplan i din tidszone, modtager både start- og slut-ping på samme monitor, sender en alarm, når en kørsel overskrider sin maksimale kørselstid, og kan registrere exitkoden og jobbets output. Hvis et ping mangler, går alarmen til e-mail, Slack, Microsoft Teams, Discord, Google Chat, Mattermost, Telegram, PagerDuty, ntfy, Pushover, en webhook eller push-notifikationer på telefonen, på alle planer. Læs trin-for-trin-guiden i Sådan overvåger du cron-jobs.
God praksis for planlægning
Planlæg tunge jobs uden for spidsbelastningen.
Spred jobs, der bruger de samme ressourcer, i stedet for at starte dem alle ved midnat.
Brug en lås (f.eks. flock), så en langsom kørsel ikke overlapper den næste.
Gennemgå tidsplanerne, når din applikation ændrer sig.
Cron på flere servere
Når det samme job findes på flere servere, så beslut, hvor det skal køre, og sørg for, at det kun kører én gang. Central planlægning eller en lås i et fælles lager hjælper. Giv hvert job sit eget heartbeat, så du ved, hvilken server der missede sin kørsel.
Sikring af cron-jobs
Cron-jobs har ofte adgang til databaser, backups og loginoplysninger.
Begræns, hvem der kan redigere crontabs.
Hold hemmeligheder ude af selve crontab-linjen, og læg dem i beskyttede filer eller i miljøkonfigurationen.
Gennemgå jobs jævnligt, og fjern dem, du ikke længere har brug for.
Brug ressourcerne effektivt
Kør kun jobs så ofte, som de har brug for, og hold kommandoerne slanke. En rapport, som ingen læser hver time, kan køre dagligt.
Test, før du stoler på det
Kør et nyt job manuelt som den samme bruger, tjek outputtet, og planlæg det først derefter. Tilføj heartbeatet samtidig, så du allerede fra første nat ved, om det kørte.
Konklusion
Cron-jobs er afgørende og usynlige, og det er netop derfor, de skal overvåges. Ret de typiske årsager, log outputtet, og giv hvert job, der betyder noget, et heartbeat.
Prøv Uptimecheck gratis i 14 dage, uden kreditkort.