Skripte crontab
se pogosto ne izvajajo po načrtu ali v skladu s pričakovanji. Za to obstajajo številni razlogi:
Namen tega wikija skupnosti je zbrati glavne razloge za to, da se skripte crontab
ne izvajajo v skladu s pričakovanji. Vsak razlog napišite v ločenem odgovoru.
V vsak odgovor vključite en razlog - podrobnosti o tem, zakaj se skripte ne izvedejo - in popravek(-e) za ta razlog.
Prosimo, da napišete samo težave, ki so značilne za cron, npr. ukaze, ki se v lupini izvajajo po pričakovanjih, v cronu pa se izvajajo napačno.
Moja glavna težava: Če pozabite dodati novo vrstico na koncu datoteke crontab
. Z drugimi besedami, datoteka crontab se mora končati s prazno vrstico.
Spodaj je ustrezen razdelek v priročniku za to vprašanje (man crontab
nato preskočite na konec):
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)
Za skripte je treba uporabiti absolutno pot:
Na primer, namesto grep
je treba uporabiti /bin/grep
:
# m h dom mon dow command
0 0 * * * /bin/grep ERROR /home/adam/run.log &> /tmp/errors
Namesto:
# m h dom mon dow command
0 0 * * * grep ERROR /home/adam/run.log &> /tmp/errors
To je še posebej zapleteno, saj bo isti ukaz deloval, če ga boste izvedli iz lupine. Razlog je v tem, da cron
nima iste okoljske spremenljivke PATH
kot uporabnik.
Cron kliče skripto, ki ni izvršljiva.
Če zaženete chmod +x /path/to/scrip
, postane skripta izvršljiva in bi morala rešiti to težavo.