Hvorfor virker crontab-scripts ikke?

Ofte udføres crontab-scripts ikke efter planen eller som forventet. Der er mange grunde til det:

  1. forkert crontab notation
  2. problem med tilladelser
  3. miljøvariabler

Denne fællesskabswiki har til formål at samle de vigtigste årsager til at crontab-scripts ikke bliver udført som forventet. Skriv hver årsag i et separat svar.

Medtag venligst én årsag pr. svar - detaljer om hvorfor det ikke udføres - og rettelse(r) for denne ene årsag.

Skriv venligst kun cron-specifikke problemer, f.eks. kommandoer, der udføres som forventet fra shell'en, men som udføres fejlagtigt af cron.

Min største fejl: Hvis du glemmer at tilføje en newline i slutningen af crontab-filen. Med andre ord skal crontab-filen slutte med en tom linje.

Nedenfor er det relevante afsnit i man-siderne for dette problem (man crontab og spring derefter til slutningen):

   Although cron requires that each entry in a crontab end  in  a  newline
   character,  neither the crontab command nor the cron daemon will detect
   this error. Instead, the crontab will appear to load normally. However,
   the  command  will  never  run.  The best choice is to ensure that your
   crontab has a blank line at the end.

   4th Berkeley Distribution      29 December 1993               CRONTAB(1)
Kommentarer (12)

Absolut sti skal bruges til scripts:

For eksempel: /bin/grep skal bruges i stedet for grep:

# m h  dom mon dow   command
0 0 *  *  *  /bin/grep ERROR /home/adam/run.log &> /tmp/errors

I stedet for:

# m h  dom mon dow   command
0 0 *  *  *  grep ERROR /home/adam/run.log &> /tmp/errors

Dette er især vanskeligt, fordi den samme kommando vil fungere, når den udføres fra shell. Årsagen er, at cron ikke har den samme PATH miljøvariabel som brugeren.

Kommentarer (3)

Cron kalder et script, som ikke kan udføres.

Ved at køre chmod +x /path/to/scrip bliver scriptet eksekverbart, hvilket burde løse problemet.

Kommentarer (2)