Usein crontab
-skriptejä ei suoriteta aikataulun mukaisesti tai odotetulla tavalla. Siihen on lukuisia syitä:
Tämän yhteisön wikin tarkoituksena on koota yhteen tärkeimmät syyt siihen, että crontab
-skriptejä ei suoriteta odotetulla tavalla. Kirjoita jokainen syy erilliseen vastaukseen.
Kirjoita yksi syy per vastaus - yksityiskohtaiset tiedot siitä, miksi sitä ei suoriteta - ja korjaus(t) kyseiseen syyhyn.
Kirjoita vain cron-kohtaisista ongelmista, esim. komennoista, jotka suoritetaan odotetusti komentotulkista, mutta jotka cron suorittaa virheellisesti.
Suurin ongelma: Jos unohdat lisätä rivinvaihdon crontab
-tiedoston loppuun. Toisin sanoen crontab-tiedoston pitäisi päättyä tyhjään riviin.
Alla on asiaa koskeva kohta man-sivuilta (man crontab
ja hyppää loppuun):
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)
Skripteissä on käytettävä absoluuttista polkua:
Esimerkiksi /bin/grep
tulisi käyttää grep
:n sijasta:
# m h dom mon dow command
0 0 * * * /bin/grep ERROR /home/adam/run.log &> /tmp/errors
Sen sijaan:
# m h dom mon dow command
0 0 * * * grep ERROR /home/adam/run.log &> /tmp/errors
Tämä on erityisen hankalaa, koska sama komento toimii, kun se suoritetaan komentotulkista. Syynä on se, että cron
:lla ei ole samaa PATH
-ympäristömuuttujaa kuin käyttäjällä.