Guides 3 min läsning

Undvik missade jobb: se till att dina cron-jobb körs som de ska

Backuper, importer och städjobb körs med cron, och de fallerar i tysthet. Vanliga orsaker till missade cron-jobb, hur du felsöker dem och hur du får ett larm när ett jobb inte körs.

Cron-jobb sköter det tysta arbetet bakom webbplatser och servrar: backuper, uppdateringar, importer, fakturor, cache-uppvärmning och städning. När de fungerar märker ingen något. När de slutar fungera märker heller ingen något, förrän en backup saknas eller en fakturakörning aldrig blev av.

Varför cron-jobb är viktiga

Cron schemalägger kommandon så att de körs automatiskt vid fasta tider eller intervall. Det sparar tid och tar bort risken att någon glömmer en uppgift. Det betyder också att kritiskt arbete, som nattliga backuper, hänger på en schemaläggare som inte säger till någon när något går fel.

Vanliga orsaker till missade cron-jobb

Nertid på servern. Om servern är avstängd eller startar om vid den schemalagda tiden körs inte jobbet.

Syntaxfel. Ett felaktigt fält i schemauttrycket kan göra att jobbet körs vid fel tid eller aldrig.

Felkonfiguration. Fel användare, fel arbetskatalog eller ett jobb som lagts i en crontab som aldrig läses in.

Skillnader i miljön. Cron körs med en minimal miljö. Ett kommando som fungerar i ditt skal kan fallera under cron eftersom PATH eller andra variabler saknas.

Överlapp och timeouts. Ett jobb som kör längre än sitt intervall kan krocka med nästa körning. En maximal körtid på jobbets monitor talar om när en körning tar för lång tid.

Så hittar och felsöker du fel

Börja med loggarna. Systemloggen (ofta /var/log/syslog eller cron-loggen i din distribution) visar om cron startade jobbet. Jobbets egen utdata visar vad som hände sedan.

Typiska fel och vad de betyder:

command not found: använd absoluta sökvägar, eller sätt PATH överst i crontab-filen.

permission denied: kontrollera filrättigheterna och vilken användare jobbet körs som.

syntax error: kontrollera schemauttrycket och citattecknen i kommandot.

Skicka utdata till en loggfil så att fel lämnar spår efter sig:

30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Så övervakar du cron-jobb

Loggar hjälper bara om någon läser dem. Övervakning gör ett tyst fel till ett larm. Det pålitligaste sättet är en heartbeat: jobbet skickar en förfrågan till en övervaknings-URL när det är klart. Om förfrågan inte kommer fram inom den förväntade tiden får du ett larm.

Med cron-övervakning i Uptimecheck pingar jobbet en unik URL med GET eller POST. Monitorn tar crontab-schemat i din tidszon, tar emot start- och slutpingar på en och samma monitor, larmar när en körning överskrider sin maximala körtid och kan registrera exitkoden och jobbets utdata. Om en ping uteblir går larmet till e-post, Slack, Microsoft Teams, Discord, Google Chat, Mattermost, Telegram, PagerDuty, ntfy, Pushover, en webhook eller pushnotiser i mobilen, på alla planer. Läs steg-för-steg-guiden i Så övervakar du cron-jobb.

Bra rutiner för schemaläggning

Schemalägg tunga jobb utanför de mest belastade timmarna.

Sprid ut jobb som använder samma resurser i stället för att starta alla vid midnatt.

Använd ett lås (till exempel flock) så att en långsam körning inte överlappar nästa.

Se över schemana när din applikation förändras.

Cron på flera servrar

När samma jobb finns på flera servrar, bestäm var det ska köras och se till att det körs en gång. Central schemaläggning eller ett lås i en delad lagring hjälper. Ge varje jobb en egen heartbeat, så vet du vilken server som missade sin körning.

Så skyddar du cron-jobb

Cron-jobb har ofta åtkomst till databaser, backuper och inloggningsuppgifter.

Begränsa vem som kan redigera crontab-filer.

Håll hemligheter borta från själva crontab-raden och lägg dem i skyddade filer eller i miljökonfigurationen.

Gå igenom jobben regelbundet och ta bort dem du inte längre behöver.

Använd resurserna effektivt

Kör jobben bara så ofta som de behöver köras, och håll kommandona slimmade. En rapport som ingen läser varje timme kan köras en gång om dagen.

Testa innan du litar på det

Kör ett nytt jobb för hand som samma användare, kontrollera utdata och schemalägg det först därefter. Lägg till heartbeaten samtidigt, så vet du redan från första natten om det kördes.

Sammanfattning

Cron-jobb är avgörande och osynliga, och just därför behöver de övervakas. Åtgärda de vanliga orsakerna, logga utdata och lägg till en heartbeat på varje jobb som spelar roll.

Prova Uptimecheck gratis i 14 dagar, inget kreditkort krävs.

Läs vidare

Guides 6 min läsning

Så övervakar du cron-jobb med heartbeats

Cron-jobb misslyckas i tysthet. En heartbeat-monitor larmar när ett schemalagt jobb inte hör av sig i tid. Så fungerar heartbeats, så lägger du till en i crontab och så väljer du rätt inställningar.

Läs

Driftstopp är historia.

Sätt upp din första övervakning på under en minut, eller ta en titt i livedemon först.

14 dagar gratis · Sedan gratis för 5 övervakningar · Inget kreditkort