it-swarm-tr.com

Crontab'ım neden tetiklemedi?

Kullandım crontab -e crontab'ma aşağıdaki satırı eklemek için:

* * * * * echo hi >> /home/myusername/test

Ancak, test dosyasının yazıldığını görmüyorum. Bu bir izin sorunu mu, yoksa crontab düzgün çalışmıyor mu?

Görüyorum ki cron süreci devam ediyor. Bunu nasıl ayıklayabilirim?

Düzenle - Ubuntu'ya sor crontab hakkında güzel bir sor , maalesef bu hala bana yardımcı olmuyor.

Edit 2 - Hmm, test dosyamın 214 satırı var gibi görünüyor, bu da son 214 dakika boyunca her dakikaya yazıldığı anlamına geliyor. Sorunun ne olduğundan emin değilim, ama belli ki gitti.

29
ripper234

Her dakika dakikada güncellenen crontab dosyalarını kontrol eden ve dikkate almayan cron (hepsi değil ve hangisinin hazırlıksız olduğunu hatırlıyorum, ancak Linux altında biriyle karşılaştım) uygulamaları var ve düşünmüyorum sonraki dakikaya kadar yeni girişler. Bu nedenle, bir crontab'ın ilk kez ateşlenmesi iki dakika sürebilir. Bu gözlemlediğiniz şey olabilir.

28
gelraen

Aynı sorunu yaşadım - sonunda yeni bir giriş ekledikten sonra çalışan bir crontab aniden durdu. Son satırdan sonra yeni bir satır koymayı unuttuğum ortaya çıktı.

Komutu vererek öğrendim

cat /var/log/syslog | grep crontab

ve çıktı sorunu gösterdi:

Jul  2 08:16:01 shiva cron[1254]: (*system*) RELOAD (/etc/crontab)
Jul  2 08:16:01 shiva cron[1254]: (*system*) ERROR (Missing newline before EOF, this crontab file will be ignored)

Yeni satırı eklemek ve kaydetmek sorunu çözdü.

10
uniomni

Bu gibi bir şey düzeltildi. Bir dahaki sefere STDERR'yi de kaydetmeyi deneyin. Aşağıdakiler sadece STDOUT'a kaydedilir, STDERR'a değil:

* * * * * echo hi >> /home/myusername/test

STDERR için de açık bir madde olduğundan emin olun. Aksi takdirde, STDERR, Cron'un nasıl yapılandırıldığına bağlı olarak kullanıcıya e-posta yoluyla gönderilebilir (e-postanın çalıştığı varsayılarak) veya hiçbir yere gitmeyebilir.

* * * * * echo hi >> /home/myusername/test 2> /home/myusername/test.stderr

Benim tercihim sronlog'a cronjob çıktısı göndermektir. Bu şekilde varolan herhangi bir sistem günlüğü altyapısından (merkezi sistem günlüğü, Splunk, zaten günlük kaydı döndürme) faydalanıyorum,/var/log/messages &/var/log/cronjob, vb. İletileri karşılaştırmak kolay ve değilim sistem yöneticilerini (e) gereksiz e-postalarla spam etmek.

* * * * * echo hi >> /home/myusername/test 2>&1 | /usr/bin/logger -t mycronjob
5
Stefan Lasiewski

Benimle sorun, komut dosyasının çalıştırılabilir olmamasıydı. crontab -e kurulum böyle yaptım

* * * * * /bin/my-script.sh

Ve dosya myscript çalıştırılabilir değildi, bu yüzden koştum

chmod +x my-script.sh

Hemen çıktıyı beklendiği gibi görmeye başladım.

2
santiago arizti

Bunun bir nedeni/home/dizin şifreli ve kullanıcı oturumu kapatıldığında cron bu dizinde bir şey yapamaz olabilir sanırım.

bkz .: https://stackoverflow.com/a/40354269/1279002

1
theINtoy

myusernae ayarını phunehehe olarak değiştirdiğimde cron satırınız bilgisayarımda düzgün çalışıyor. Sisteminizde neyin yanlış olduğunu bulmanın birkaç yolu vardır.

Cron genellikle yanlış bir şey olduğunda kullanıcıya posta gönderir. "Postanız var" iletisini görürseniz gelen kutunuzu kontrol edin için bir posta istemcisi kullanın. Veya giriş dizininizi kontrol edin, dead.letter Orada.

Kontrol edebilirsin /var/log/ cron ile ilgili kayıtlar için. Bilgisayarımda günlük dosyası /var/log/cron/current (kök erişimi gerektirir).

Kök erişiminiz varsa, cron arka plan programını durdurabilir ve hata ayıklama modunda başlatabilirsiniz. Örneğin (fcron ifadesini daemon adınızla değiştiririm):

killall fcron
fcron --foreground --debug
1
phunehehe

Büyük olasılıkla, cron başarısız olduğunda, o bilgisayardaki cron işinin kullanıcı kimliğine bir e-posta oluşturur. Bilgisayarınızda çalışan bir MTA'nız yoksa veya bu postayı başka bir yere okumuyor veya iletmiyorsanız, MTA çalışıyor olsa bile bu mesajı görmezsiniz.

Crontab hatalarınızı posta yoluyla almanın iyi bir yolu, crontab'ınızın şöyle görünmesini sağlamaktır:

MAILTO="[email protected]"
* * * * * echo hi >> /home/myusernae/test

Açıkçası, [email protected] yerine e-posta adresinizi kullanın. Bu, cron'a yerel hesap yerine e-posta adresinize hata göndermesini söyler. Özellikle, size çıktı göndermek istediğiniz bir kök crontab (veya /etc/cron.d içinde crontab parçası) varsa, kök posta kutusunu veya kök yönlendirme adresini spam yapmaktan kaçınabilirsiniz.

1
jsbillings