Genellikle, crontab
komut dosyaları programa göre veya beklendiği gibi yürütülmez. Bunun çok sayıda nedeni vardır:
Bu topluluk vikisi, crontab
betiklerinin beklendiği gibi çalıştırılmamasının en önemli nedenlerini bir araya getirmeyi amaçlamaktadır. Her bir nedeni ayrı bir cevap olarak yazın.
Lütfen her yanıt için bir neden - neden çalıştırılmadığına dair ayrıntılar - ve bu nedene yönelik düzeltme(ler) ekleyin.
Lütfen sadece cron'a özgü sorunları yazın, örneğin kabuktan beklendiği gibi çalışan ancak cron tarafından hatalı çalıştırılan komutlar.
Benim en büyük hatam: Eğer crontab
dosyasının sonuna yeni bir satır eklemeyi unutursanız. Başka bir deyişle, crontab dosyası boş bir satırla bitmelidir.
Bu konuyla ilgili man sayfalarındaki ilgili bölüm aşağıdadır (man crontab
sonra sonuna atlayın):
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)
Komut dosyaları için mutlak yol kullanılmalıdır:
Örneğin, grep
yerine /bin/grep
kullanılmalıdır:
# m h dom mon dow command
0 0 * * * /bin/grep ERROR /home/adam/run.log &> /tmp/errors
Onun yerine:
# m h dom mon dow command
0 0 * * * grep ERROR /home/adam/run.log &> /tmp/errors
Bu özellikle zordur, çünkü aynı komut kabuktan çalıştırıldığında da çalışacaktır. Bunun nedeni cron
un kullanıcı ile aynı PATH
ortam değişkenine sahip olmamasıdır.