Cron, iş çıktısını bir günlüğe * varsayılan olarak * (posta yerine) yazabilir mi?


23

Hepimiz cron işlerinden çıktı elde etmenin doğru yolunun onu bir dosyaya yönlendirmek olduğunu biliyoruz:

0 * * * * /bin/date >> /var/log/date.log 2>&1

Bununla birlikte, bazen yöneticiler tembel, unutkan veya cahildir ve bu yönlendirmeleri koyamazlar; Bu durumda işin çıktısı $ MAILTO ya da sahip olan kullanıcı ya da root'a gönderilir. Yönettiğim bazı kutularda, posta devre dışı, bu nedenle bu çıktı bir kara deliğe gidiyor. Merak ettiğim şey, cron'a herhangi bir iş çıktısı almasını söylemenin ve postalamak yerine, hepsini bir yere yazabilmenin bir yolu var mı? Ubuntu kullanıyorum (8.04, ancak 9.04’e geçiyorum). Bu rastgele Google sonucunda böyle bir çözüm ipucu var , ancak OP'nin cron çıktısı ve cron işlerinin çıktısı konusunda kafası karışmış olabileceğini düşünüyorum.

Biraz kodlama veya bilgisayar korsanlığı içeren çözümlere açığım, ancak ideal olarak bu bir yerde ayarlayabileceğim bir yapılandırma bitiydi. Hiçbir ipucu göremiyorum man cron. Teşekkürler!

Yanıtlar:


1

İçin cronie(Gentoo El Kitabı örneğin önerilir) cron, syslog kullanılarak sistem günlüğüne iş çıkışı gönderir cron çağrısı için argüman var "-s" dır.


3

Kısa cevap hayır, cron, crontab'ın sahibine tasarım yoluyla gönderir. Standart cronda bunu değiştirmenin bir yolu yoktur.

Aklıma gelen en iyi şey, bu davranışın postayı kullanıcı posta kutusu yerine bir günlük dosyasına atmasını istediğiniz makinelerde MTA'ları yapılandırmak.


3

"Posta devre dışı" derken tam olarak ne demek istediğinizi anlamadım. Ama belki /etc/aliasesbir boruya yönelik bir takma ad ayarlayabilirsiniz ? Gibi bir şey

root: "|/bin/cat >> /var/log/cron.log"

root: /var/log/cron.logçalışmıyor feep.net/sendmail/tutorial/intro/aliases.html
Endolit

Benim için hiçbir şey yapmaz.
Kasım'da endolith

Bunlar, yalnızca MTA'nız olarak sendmail kullanıyorsanız işe yarayabilir. Bu daha az yaygın hale geliyor. (Evet, 5 yaşındaki bir yorumu yanıtladığımı biliyorum!)
Alex L

2

İstediğiniz şeyin Ubuntu (veya başka bir) cron ile mümkün olduğunu sanmıyorum.

Kenara geekmonkeys fikrinden, ayrıca ayarlayabilirsiniz $ MAILTO bir yerel hesap ve yönlendirmek için procmail'in aracılığıyla çıktı.


1

Cron için böyle bir ayar hiç duymadım, bu yüzden komut dosyası yoluna gidecektim.

Devriye / var / spool / cron / * için bir cron işi oluşturun ve yönlendirmeyi sahip olmayan herhangi bir işe ekleyin.


1

Başka bir seçenek cron_wrapper veya başka bir şey adı verilen bir kabuk betiği oluşturmak ve bunun gibi bir şey yapmasını sağlamak olacaktır:

#! / Bin / sh

eval "$ * >> /var/log/cronlog.log"
$ çıkış?

O zaman, tüm crontab'larınızın böyle bir şeye ihtiyacı var:

* * * * * / usr / yerel / bin / cron_wrapper yankı merhaba

Not Bu kodu test etmedim, bu sadece bir fikir.


1
Bu sorunu çözmez. İnsanlar MAILTO ayarını yapmayı veya stdout'u bir dosyaya yönlendirmeyi hatırlamazlarsa, sargı içinde bir şeyler çalıştırmayı hatırlamayacaklardır.
Kamil Kisiel

1

"Standart cron" nedir bilmiyorum. Çok sayıda cron cüce var, farklı dağıtımlar farklı olanlar kullanır. Vixie cron en yaygın şekilde konuşlandırılmıştır, bu yüzden muhtemelen bunu kastediyorsunuz. Ancak bazı dağıtımlarda, varsayılan olmaz.

Arch Linux'ta varsayılan olan Dillon'ın cronunun (dcron) geliştirilmesini devraldım . Diğer dağıtımlar da kullanır, ancak başka bir yerde varsayılan olup olmadığını bilmiyorum. dcron -Msendmail yerine özel bir komut dosyası kullanmak istediğinizi belirtmek için bir çağrı seçeneğine sahiptir . Senaryo tartışmasız ve birkaç e-posta başlığında ve &>herhangi bir cronjob'un stdin çıktısı ile çağrılır . ( &>Çıktı yoksa , komut dosyası çağrılmaz.)


1

neden özellikle kullanıcının crontab'ında MAILTO = "" ayarlamıyoruz. Bu, / var / spool / mail / içindeki posta iletilerinin kaydedilmesini engeller.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.