Hvorfor fungerer ikke crontab-skript?

Ofte kjøres ikke crontab-skript etter planen eller som forventet. Det er mange grunner til det:

  1. feil crontab-notasjon
  2. problemer med tillatelser
  3. miljøvariabler

Denne fellesskapswikien tar sikte på å samle de viktigste årsakene til at crontab-skript ikke kjøres som forventet. Skriv hver årsak i et eget svar.

Vennligst ta med én årsak per svar - detaljer om hvorfor det ikke kjøres - og løsning(er) for den ene årsaken.

Vennligst skriv bare cron-spesifikke problemer, f.eks. kommandoer som utføres som forventet fra skallet, men som utføres feil av cron.

My top gotcha: Hvis du glemmer å legge til en ny linje på slutten av crontab-filen. Med andre ord skal crontab-filen avsluttes med en tom linje.

Nedenfor er det relevante avsnittet i man-sidene for dette problemet (man crontab og hopp deretter til slutten):

   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)

Absolutt sti skal brukes for skript:

For eksempel bør /bin/grep brukes 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 spesielt vanskelig, fordi den samme kommandoen vil fungere når den kjøres fra skallet. Årsaken er at cron ikke har samme PATH miljøvariabel som brukeren.

Kommentarer (3)

Cron kaller et skript som ikke kan kjøres.

Ved å kjøre chmod +x /path/to/script blir skriptet kjørbart og bør løse dette problemet.

Kommentarer (2)