Ben kurulum Eğer cron
işler yanlış onlar sessizce başarısız görünmektedir. Neyin yanlış gittiğini anlamak için nerede hata günlüğü aramalıyım?
Ben kurulum Eğer cron
işler yanlış onlar sessizce başarısız görünmektedir. Neyin yanlış gittiğini anlamak için nerede hata günlüğü aramalıyım?
Yanıtlar:
Diğerlerinin de belirttiği gibi, cron
çalıştırdığı herhangi bir programın çıktısını size e-postayla gönderir (herhangi bir çıktı varsa). Dolayısıyla, herhangi bir çıktı elde etmezseniz, temel olarak üç olasılık vardır:
crond
programı çalıştırmak veya e-posta göndermek için bir kabuk bile başlatamadıcrond
çıktıyı postalamakta zorluk çekti veya posta kaybedildi.Durum 1 çok düşük bir ihtimaldir, ancak cron günlüklerinde bir şey yazılmalıdır. Cron'un kendine ait bir syslog tesisi vardır, bu nedenle /etc/syslog.conf
tesis mesajlarının nereye cron
gönderildiğini görmek için bir göz atmalısınız (veya dağıtımınızdaki eşdeğer dosya) . Popüler varış noktaları içerir /var/log/cron
, /var/log/messages
ve /var/log/syslog
.
2. durumda, mailer daemon günlüklerinde incelemelisiniz: Cron daemon'undan gelen iletiler genellikle olduğu gibi görünür root@yourhost
. MAILTO=...
Crontab dosyasındaki bir satırı kullanarak cronun belirli bir adrese e-posta göndermesini sağlayabilirsiniz; Örneğin:
MAILTO=my.offsite.email@example.org
00 15 * * * echo "Just testing if crond sends email"
3. durumda, programın gerçekten çalışıp çalışmadığını kolayca kontrol edebileceğiniz başka bir komut ekleyerek çalıştırılıp çalıştırılmadığını test edebilirsiniz: örneğin,
00 15 * * * /a/command; touch /tmp/a_command_has_run
Böylece crond
, zamanına bakarak bir şeylerin gerçekten olup olmadığını kontrol edebilirsiniz /tmp/a_command_has_run
.
dead.letter
kök veya ilgili kullanıcı ana dizinde adı geçen bir dosyada da bulabilirsiniz .
İş çıktısını her zaman açıkça bir günlük dosyasına gönderebilirsiniz:
0 8 * * * /usr/local/bin/myjob > /var/log/myjob.log 2>&1
Bunun, daha önce belirtilen posta davranışını aşacağını, çünkü crond'un kendisi işten herhangi bir çıktı almayacağını unutmayın. Bu davranışı devam ettirmek istiyorsanız, tee (1) 'e bakmalısınız.
>>
yerine kullanmıyorsunuz >
, bu nedenle her zaman günlük dosyasının üzerine yazmazsınız?
| /usr/bin/logger
Stefan tarafından akıllıca önerildiği gibi , herhangi bir G / Ç yönlendirmesi, isteseniz bile yapar .
myjob.log
beklendiği gibi 0 boyutta oluşturmuş, ancak başka bir dosyaya giriş yapmış, bu ayarı nerede değiştirebilirim?
E-postaları göremiyorsanız, şirketinizin @@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- Postaları göremiyorsanız, şirketinizin @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- Postaları göremiyorsanız, şirketinizin @@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- Postaları göremiyorsanız, şirketinizin @@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- Postaları göremiyorsanız, şirketinizin @@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- Postaları görmüyorsanız, bu hesabı izlemek için kullanan kişilere oldukça can sıkıcı olabilecek hatalarla, şirketinizin kökünü @ spam. Bunun yerine çıktıyı Syslog'a göndermeyi deneyin:
*/5 * * * * yourcronjob 2>&1 | /usr/bin/logger -t yourtag
Ardından, cronjob'ın çalışmasını ve / var / log / messages'de (veya bazı sistemlerde /var/log/user.log) hatayı aramasını bekleyin.
Bu, "yourcronjob: command not found" gibi yalnızca 1-2 satır uzunluğundaki hata mesajları için harikadır. Ayrıca mevcut syslog altyapınızı kullanır (Logrotation, merkezi syslogging, Splunk, vb.) Ayrıca e-posta spam'lerini kökünden azaltır.
Cronjob'ınız yüzlerce çıktı satırı oluşturuyorsa, bu iyi bir çözüm olmayabilir.
Varsayılan cron yapılandırması size programınızın çıktısını içeren bir posta gönderecektir. Bu başarısız olursa, başarısız olan programınızı, programın çalışmamasını sağlayan bir kabuk betiğine sarmayı deneyebilir ve çıktıyı daha fazla günlüğe kaydedebilirsiniz.
Bu, bazı cron uygulamalarında yapılandırılabilir bir ayardır.
crond
İşin yürütülememesi veya işin sıfır olmayan bir çıkış kodu döndürmesi durumunda e-posta almanız gerekir . Yazmayı deneyin:
$ mailx
komut isteminde.
mailx(1)
Unixlike sistemlerin çoğunda temel posta okuma programıdır. Modern standartlara göre çok ilkel, ancak her zaman kullanılabilir olması için hemen hemen güvenebilirsiniz. Diğer, daha iyi posta ajanları mevcut olabilir, ancak kullanmakta olduğunuz rastgele bir makinede hangisinin yüklü olduğunu asla bilmediğiniz kadarı vardır.
Sisteminizi Internet e-posta sunucusu olarak yapılandırmadıysanız, bu posta alt sisteminin yalnızca makinede kullanıldığını unutmayın. Makinedeki diğer kullanıcılardan e-posta gönderebilir ve alabilirsiniz, ancak dünyaya e-posta gönderemeyebilirsiniz ve dış dünyadan e-posta göndermeniz kesinlikle makinenize gelemez.
Cron /var/log/messages
, temel bilgileri günlüğe kaydeder , ancak herhangi bir program çıktısını çağıran kullanıcıya gönderir.
/var/log/messages
benim Ubuntu sunucuda ( 4.4.0-128-generic #154-Ubuntu SMP
). Neden bir fikrin var mı? Ben root
aylardır crontab içinde tanımlanmış birkaç tane cron işim vardı (örneğin apt autoremove
), ancak hiçbiri idam edilmemiş gibi görünüyor.
Birkaç yıl önce aynı sorunları yaşayarak bu konuya rastladım ve yakın zamanda Ricardo'nun yukarıda belirtilen davalara bir çözüm buldum. Bir e-postanın eksikliğini tespit etmek zordur (dediğiniz gibi) ve kök e-postanızı e-postanızda kesinlikle spam yapmak istemezsiniz. İlgileniyorsanız deadmanssnitch.com adresini ziyaret edin . . Bu araç yukarıda belirtilen davaları çözmektedir. Kullanımı oldukça basit gözüküyor - sadece aracın size bahşedeceğiniz kodları ekleyin. İşiniz belirli bir dahili alanda çalışamazsa, uyarılırsınız. İşiniz tekrar çalışmaya başlarsa, siz de uyarılırsınız.
Kullanıyorum vixie-cron
, bu yüzden bunun her şey için geçerli olup olmadığını bilmiyorum. Ancak dead.letter
işin tüm çıktılarını içeren bir dosyam var.
Benim içinde /root/
klasörün ben var crons.cron
ben çalıştırarak benim crontab olarak ayarladığınız crontab /root/crons.cron
. dead.letter
de yaratılacak /root/
.
Düzenle
Ben sadece Google’dı dead.letter
ve teslim edilemeyen bir posta. Görünüşe göre cron ile ilgisi yok. Doğru şekilde ayarlanmış bir postaya sahip değilseniz (benim gibi), dosyaya sahip olacaksınız.
Yeni başlayanlar için bu hata ayıklamak için bir acı olabilir. Dakika ve saat değerlerini değiştirmemediğinizden emin olun. Dakika önce gelir, sonra saat. Her biri için 12'den küçük değerler sağladığınızda, bunları kabul eder ancak beklendiği gibi veya hiç çalışmayabilir.