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.