Cron-jobber gjør det stille arbeidet bak nettsteder og servere: sikkerhetskopier, oppdateringer, importer, fakturaer, oppvarming av cache og opprydding. Når de fungerer, merker ingen noe. Når de stopper, merker heller ingen noe, før en sikkerhetskopi mangler eller en fakturakjøring aldri ble gjort.
Hvorfor cron-jobber er viktige
Cron kjører kommandoer automatisk til faste tider eller med faste intervaller. Det sparer tid og fjerner risikoen for at noen glemmer en oppgave. Samtidig betyr det at kritisk arbeid, som sikkerhetskopiene hver natt, er avhengig av en planlegger som ikke sier fra til noen når noe går galt.
Vanlige årsaker til at cron-jobber ikke kjører
Nedetid på serveren. Er serveren av eller starter på nytt på det planlagte tidspunktet, kjører ikke jobben.
Syntaksfeil. Et feil felt i tidsplanuttrykket kan føre til at jobben kjører til feil tid eller aldri.
Feilkonfigurasjon. Feil bruker, feil arbeidsmappe eller en jobb lagt i en crontab som aldri blir lastet inn.
Ulike miljøer. Cron kjører med et minimalt miljø. En kommando som fungerer i skallet ditt, kan feile under cron fordi PATH eller andre variabler mangler.
Overlapp og tidsavbrudd. En jobb som kjører lenger enn intervallet sitt, kan kollidere med neste kjøring. En maksimal kjøretid på jobbens monitor forteller deg når en kjøring tar for lang tid.
Slik finner og feilsøker du feil
Begynn med loggene. Systemloggen (ofte /var/log/syslog eller cron-loggen i distribusjonen din) viser om cron startet jobben. Jobbens egen utdata viser hva som skjedde etterpå.
Typiske feil og hva de betyr:
command not found: bruk absolutte stier, eller sett PATH øverst i crontaben.
permission denied: sjekk filrettighetene og hvilken bruker jobben kjører som.
syntax error: sjekk tidsplanuttrykket og anførselstegnene i kommandoen.
Send utdataene til en loggfil, så feil etterlater seg spor:
30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Overvåking av cron-jobber
Logger hjelper bare hvis noen leser dem. Overvåking gjør en stille feil om til et varsel. Den mest pålitelige metoden er en heartbeat: jobben sender en forespørsel til en overvåkings-URL når den er ferdig. Kommer ikke forespørselen innen forventet tid, får du et varsel.
Med cron-monitorer i Uptimecheck pinger jobben en unik URL med GET eller POST. Monitoren tar crontab-tidsplanen i din tidssone, tar imot start- og ferdig-ping på samme monitor, varsler når en kjøring overskrider maksimal kjøretid, og kan registrere avslutningskoden og jobbens utdata. Mangler et ping, går varselet til e-post, Slack, Microsoft Teams, Discord, Google Chat, Mattermost, Telegram, PagerDuty, ntfy, Pushover, en webhook eller push-varsler på mobilen, på alle planer. Les steg-for-steg-guiden i Slik overvåker du cron-jobber.
Beste praksis for tidsplaner
Legg tunge jobber utenfor perioder med høy belastning.
Spre jobber som bruker de samme ressursene, i stedet for å starte alle ved midnatt.
Bruk en lås (for eksempel flock), så en treg kjøring ikke overlapper med den neste.
Gå gjennom tidsplanene når applikasjonen endrer seg.
Cron på flere servere
Når den samme jobben finnes på flere servere, må du bestemme hvor den skal kjøre, og sørge for at den kjører én gang. Sentral planlegging eller en lås i et delt lager hjelper. Gi hver jobb sin egen heartbeat, så du vet hvilken server som gikk glipp av kjøringen.
Sikring av cron-jobber
Cron-jobber har ofte tilgang til databaser, sikkerhetskopier og påloggingsinformasjon.
Begrens hvem som kan redigere crontabs.
Hold hemmeligheter ute av selve crontab-linjen, og legg dem i beskyttede filer eller i miljøkonfigurasjonen.
Gå gjennom jobbene jevnlig, og fjern dem du ikke lenger trenger.
Bruk ressursene effektivt
Kjør jobbene bare så ofte som de trenger, og hold kommandoene enkle. En rapport som ingen leser hver time, kan kjøres daglig.
Test før du stoler på den
Kjør en ny jobb manuelt som samme bruker, sjekk utdataene og planlegg den først da. Legg til heartbeaten samtidig, så du vet fra første natt om den kjørte.
Oppsummering
Cron-jobber er avgjørende og usynlige, og det er nettopp derfor de trenger overvåking. Rett de vanlige årsakene, logg utdataene og legg til en heartbeat på hver jobb som betyr noe.
Prøv Uptimecheck gratis i 14 dager, uten kredittkort.