Soru İş çıkışı bir çıktıya cron yazabilir * varsayılan olarak * (posta yerine)?


Hepimiz, cron işlerinden çıktı almanın doğru yolunun bir dosyaya yönlendirilmesi olduğunu biliyoruz:

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

Bununla birlikte, bazen yöneticiler tembel, unutkan veya cahildir ve bu yönlendirmelere yer vermezler; Bu durumda işin çıktısı $ MAILTO'ya veya sahip kullanıcı veya köke gönderilir. Yönetdiğim bazı kutularda posta devre dışı bırakıldı, bu nedenle bu çıktı bir kara deliğe dönüştü. Merak ettiğim şey, cron'a herhangi bir iş çıkışı almasını ve postalamak yerine, bir yere tüm yakalama günlüğüne atmasını sağlamanın bir yolu var mı? Ubuntu kullanıyorum (8.04 fakat 9.04'e geçiyorum). Bunun içinde böyle bir çözüm var. rastgele Google sonucuAma sanırım OP, cron çıkışı ile cron işlerinin çıktısı hakkında kafa karıştırılmış olabilir.

Biraz komut dosyası veya bilgisayar korsanlığı içeren çözümlere açığım ama ideal olarak bu bir yere yerleştirebileceğim bir yapılandırma biti olacaktır. İçinde herhangi bir ipucu görmüyorum man cron. Teşekkürler!


21
2017-08-19 17:11


Menşei




Cevaplar:


İçin cronie cron (örneğin Gentoo Handbook tarafından tavsiye edilir), cron çağrısı için "-s" argümanı vardır, bu da iş çıkışını syslog kullanarak sistem günlüğüne gönderir.


1
2018-06-20 13:43





Kısa cevap, crontab'ın sahibine tasarımla ilgili cron postalar değildir. Standart cronda bunu değiştirmenin bir yolu yoktur.

Düşünebildiğim en iyi şey, MTA'ları, bu davranışı bir posta kutusu içine bir kullanıcı posta kutusu yerine bir günlük dosyasına dökmek istediğiniz makinelerde yapılandırmaktır.


3
2017-08-19 17:57





"Posta devre dışı" dediğinizde tam olarak ne demek istediğinizden emin değilim. Ama belki bir takma isim de kurabilirsin. /etc/aliases Bu bir boruya yönlendirilir? Gibi bir şey

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

3
2017-08-19 19:53



root: /var/log/cron.log çalışmıyor mu? feep.net/sendmail/tutorial/intro/aliases.html - endolith
Benim için hiçbir şey yapmıyor. - endolith
Bunlar yalnızca Mmail'iniz olarak sendmail'i çalıştırıyorsanız işe yarayabilir. Bu daha az yaygın hale geliyor. (Evet, 5 yaşındaki bir yoruma cevap verdiğimi biliyorum!) - Alex L


İstediğin şeyin aslında Ubuntu (ya da başka bir) cron ile mümkün olduğunu düşünmüyorum.

Geekmonkeys fikrinin yanı sıra, $ MAILTO yerel bir hesaba ve çıkışı procmail üzerinden yönlendirin.


2
2017-08-19 17:59





Cron için böyle bir ayar duymadım, bu yüzden komut dosyası yolunu alırdım.

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


1
2017-08-19 17:51





Başka bir seçenek, cron_wrapper veya bir şey denen bir kabuk betiği oluşturmak ve bunun gibi bir şey yapmaktır:

#! / Bin / sh

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

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

* * * * * / usr / local / bin / cron_wrapper echo merhaba

Not Bu kodu test etmedim, sadece bir fikir.


1
2017-08-19 18:17



Bu problemi çözmez. Eğer insanlar MAILTO'yu ayarlamayı ya da stdout'u bir dosyaya yönlendirmeyi hatırlayamazlarsa, sarmalayıcıdan bir şeyleri çalıştırmayı hatırlamayacaklar. - Kamil Kisiel


"Standart cron" un ne olduğunu bilmiyorum. Çok sayıda cron daemon var, farklı dağıtımlar farklı şeyler kullanıyor. Vixie cron en yaygın olarak konuşlandırılmış, bu yüzden muhtemelen ne demek istediniz. Ama bazı dağıtımlarda, bu varsayılan olmaz.

Gelişimini devraldım Dillon'un cronu Arch Linux'taki varsayılan olan (dcron). Diğer dağıtımlar da kullanıyor, ama başka bir yerde varsayılan değer olup olmadığını bilmiyorum. dcron bir çağrı seçeneği var -M Sendmail yerine özel bir komut dosyası kullanmak istediğinizi belirtmek için. Komut argüman olmadan ve birkaç e-posta başlığı ile çağrılır. &>herhangi bir cronjobs'un stdin olarak çıktısı. (Hayır ise &> çıktı, betik çağrılmaz.)


1
2018-02-17 15:55





Neden MAILTO = "" kullanıcısını özellikle crontab ayarlamıyoruz. Bu, / var / spool / mail / adresindeki posta iletilerinin günlüğe kaydedilmesini engeller.


1
2017-07-08 10:58