Cron neden günlük kaydı için MTA gerektirir? Bunun özel bir avantajı var mı? Neden diğer çoğu yardımcı program gibi bir günlük dosyası oluşturamıyor?
Cron neden günlük kaydı için MTA gerektirir? Bunun özel bir avantajı var mı? Neden diğer çoğu yardımcı program gibi bir günlük dosyası oluşturamıyor?
Yanıtlar:
Verileri günlüğe kaydetmenin geleneksel "standart" yolunun syslog olduğunu ve iletilere dahil edilen meta verilerin "tesis kodu" ve öncelik düzeyi olduğunu düşünün . Tesis kodu, günlük akışlarını farklı servislerden ayırmak için kullanılabilir, böylece farklı günlük dosyalarına, vb.
Syslog'un sahip olmadığı, iletileri farklı kullanıcılar için veya farklı kullanıcılar için ayırmanın bir yoludur ve bu, cron
geleneksel çok kullanıcılı bir sistemde ihtiyaç duyulan bir şeydir . Tüm kullanıcıların cron işlerinden yalnızca sistem yöneticisinin görebileceği ortak bir günlük dosyasına mesaj toplamanın bir faydası yoktur. Öte yandan, e-posta doğal olarak farklı kullanıcılara mesaj göndermeyi sağlar, bu yüzden burada mantıklı bir seçimdir. Alternatif, cron'un işi manuel olarak yapması ve her kullanıcının ana dizinine günlük dosyaları oluşturmasıdır, ancak geleneksel bir çok kullanıcılı Unix sisteminin çalışan bir MTA'ya sahip olduğu varsayılır, bu nedenle cron'da uygulamak çoğunlukla bir nafile egzersiz.
Modern sistemlerde, elbette alternatif seçenekler olabilir.
Ben "günlüğe kaydetme" ile işlerin gerçek çıktı depolamak demek olduğunu varsayıyorum. İşlerin çalıştırılması cron girişinde zaten oturum açmıştır /var/cron/log
(yol sistemler arasında farklılık gösterebilir). Bu günlük için MTA gerekmez.
Bir cron işi, crontab'ı işin parçası olan kullanıcı olarak çalıştırılır.
Genel durumda, bu kullanıcının sistemde dosyalar oluşturabileceğinin (bir kullanıcı etkileşimli bir kullanıcı olmayabilir), özellikle de /var
günlüklerin oluşturulduğu hiyerarşinin altında olmadığının garantisi yoktur . Kullanıcıyı bir işten kaynaklanan hataları ve diğer çıktıları bildirmenin en güvenli yolu, bunları toplamak ve kullanıcıya e-posta ile göndermektir. Bu aynı zamanda kullanıcının, örneğin tercih ettiği konumdaki hataları görebilmesi için hesabın e-posta yeniden yönlendirmesini ayarlamasına olanak tanır.
Kullanıcı bir işin çıktısını dosyaya kaydetmek istiyorsa, bunu crontab'da basit bir yeniden yönlendirme ile yapabilir:
0 */2 * * * "$HOME/scripts/myscript" >"$HOME/logs/myscript.log" 2>&1
Bu, "$HOME/scripts/myscript"
her iki saatte bir, saatte çalışır ve tüm çıktıları kaydeder "$HOME/logs/myscript.log"
. Tüm çıktılar yeniden yönlendirildiği için bu işi çalıştırarak hiçbir e-posta oluşturulmaz. Bu olmadan 2>&1
, hata iletileri yine de e-posta ile gönderilir.
Bu, kullanıcının çıktının nereye gideceğini seçmesini sağlar.