Guides 3 min. læsning

Undgå oversprungne opgaver: Sørg for, at dine cron-jobs kører, som de skal

Backups, importer og oprydning kører via cron, og de fejler i stilhed. Typiske årsager til cron-jobs, der ikke kører, hvordan du fejlsøger dem, og hvordan du får en alarm, når et job udebliver.

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.

Gratis værktøj Cron-udtryk forklaret

Læs videre

Guides 8 min. læsning

Cron-udtryk forklaret: syntaks, eksempler og typiske fejl

Et cron-udtryk er fem felter, der angiver, hvornår et job kører. Syntaksen, specialtegn og genveje som @daily, færdige eksempler og de fejl med tidszone og PATH, der får jobs til at fejle.

Læs

Guides 6 min. læsning

Sådan overvåger du cron-jobs med heartbeats

Cron-jobs fejler i stilhed. En heartbeat-monitor giver dig en alarm, når et planlagt job ikke melder sig til tiden. Sådan virker heartbeats, sådan tilføjer du en til en crontab, og de indstillinger, du skal vælge.

Læs

Nedetid er fortid.

Opret din første monitor på under et minut, eller se dig omkring i livedemoen først.

14 dages gratis prøveperiode · Derefter gratis med 5 monitorer · Intet betalingskort