Cron'un sistem günlüğümü doldurmasını nasıl önleyebilirim?


31

Her dakika yürütülecek bir senaryo var. Sorun, cron'un /var/log/syslogher çalıştırışında oturum açmasıdır. Sonunda tekrar tekrar böyle tekrarlanan bir şey görerek sonunda /var/log/syslog:

Jun 25 00:56:01 myhostname /USR/SBIN/CRON[1144]: (root) CMD (php /path/to/script.php > /dev/null)

Debian kullanıyorum.

Sorularım: Her zaman cron'a bu bilgiyi syslog'a yazmadığını söylememin bir yolu var mı?


1
Bunu bir Busybox platformunda nasıl yapacağınız hakkında bir fikriniz var mı?
/Etc/syslog.conf

Yanıtlar:


25

Cron çıktısını ayrı bir kayıt tesisine gönderebilirsiniz, aşağıdakileri /etc/syslog.confdosyaya ekleyin :

# Log cron stuff
cron.*                                                  /var/log/cron

Döndüğünden emin olmak /var/log/croniçin kendinize eklemeyi unutmayın /etc/logrotate.d/syslog, örneğin

# /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
    sharedscripts
    postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

Giriş için teşekkür ederim. Cron. * / Var / log / cron ekledim ve cron'u yeniden başlattım, ancak / var / log / cron'u boş bırakırken mesajları / var / log / syslog içine atmaya devam ediyor. neden bir şey yapmadığından emin değilim
user7321

1
oh adamım, benim açımdan epik başarısızlık. Syslog.conf dosyasını düzenliyor ve cron'u yeniden başlatıyordum! İşe yaramayacağına
şüphe

1
Cron.log dosyasının etkinleştirilmesi, cron iletilerinin syslog'a yazılmasını engellemez.
temel6

16

Tamam,

Sorumun çözümü şuydu:

değişiklik

*.*;auth,authpriv.none     -/var/log/syslog

için

*.*;cron,auth,authpriv.none     -/var/log/syslog

içinde /etc/syslog.confve sonra syslog'u yeniden başlatın

Ayrıca /var/log/cron.logDave Cheney tarafından önerildiği gibi gönderilen ve üzerine bir logrotate sıkışmış bir cronum var. Daves önerisiyle yaptığım düzeltme durumum için en uygun çözüm çünkü:

  1. o tutar /var/log/syslogCron iletilerle dolmasını olmaktan
  2. Hala cron mesajları alıyorum (sorun giderme için güzel)
  3. logrotate, /var/log/cron.logçok büyük olmasını önlüyor .

7
Modern sistemlerden endişe edenler için rsyslogDebian 8.0 Jessie'de bir tane var, bu yüzden /etc/rsyslog.confdüzenlenecek. Bu arada, eklenecek dizeler zaten varsayılan olarak oradadır, sadece yorumunu kaldırmanız gerekir (satır 63). Ve /var/log/cron.logzaten içeride /etc/logrotate.d/syslog, tıpkı paket işverenlerinin bu konuyu okudukları gibi.
TranslucentCloud

Sorunuz öyleydi Is there any way I can tell cron not write this information to syslog every time. Cevap bu değil.
ntd

@TranslucentCloud Sadece ubuntu 14 LTS'deki rsyslog yapılandırmamın /etc/rsyslog.d/50-default.conf içinde olduğunu eklemek istedim.
Johnny

8

/ Etc / default / cron değiştir

  # Or, to log standard messages, plus jobs with exit status != 0:
  # EXTRA_OPTS='-L 5' 
  #
  # For quick reference, the currently available log levels are:
  #   0   no logging (errors are logged regardless)
  #   1   log start of jobs
  #   2   log end of jobs
  #   4   log jobs with exit status != 0
  #   8   log the process identifier of child process (in all logs)
  #
  EXTRA_OPTS="-L 0"

Varsayılan olarak EXTRA_OPTS satırı ""


Bu IMO doğru çözümdür: günlük kaydını oluşturmayın.
ntd

4

Ubuntu 14.04.5'te (ve muhtemelen başka bir yerde) syslogd yerine rsyslogd var. TranslucentCloud, Debian Jessie ile buna işaret etti, ancak aynı çözüm (ancak syslogd.conf yerine rsyslog.conf'u değiştirmek) Ubuntu'da görünmüyor.

/Etc/rsyslog.d/50-default.conf 'da ayarlanan değerlerin aslında /etc/rsyslog.conf' da ayarlanan öğelere göre öncelikli olacağı görülüyor, bu yüzden değişiklikleri burada yapmak ve rsyslog ve cron 'u yeniden başlatmak daha iyi . Aksi halde, cron günlüğünün syslog'da günlüğe kaydetmesinin varsayılan davranışına ek olarak , cronlog'da cron günlüğüne (ancak özel olarak değil) sahip olursunuz.

/Etc/rsyslog.d/50-default.conf 'daki ilk satırlar:

*.*;cron,auth,authpriv.none     -/var/log/syslog
cron.*                          /var/log/cron.log

Ve işte!


1
Çok güzel cevap. Bununla birlikte, bu aşırı derecede eski olduğundan, Stack Overflow'a gelecekteki katılım için yeni sorulara odaklanmak isteyebilirsiniz.
Magellan

3

Bunu farklı bir şekilde çözdüm, ama amacım biraz farklıydı. Çalıştırma sırasında oluşturulan cron log girişlerini atmak istedim, böylece sabit disklerim her 5 dakikada bir uyuyabiliyordu.

Syslog.conf dosyasındaki bir log olayının hedefini pipo ile önekleyerek bir kabuk komutu olabilir ve böylece istemediğimleri atmak için grep kullandım. Yani:

cron.*              | grep -v "(/usr/libexec/atrun)" >> /var/log/cron.log

Soruşturmadım, ancak hala istenirse bu kütük girişlerini başka bir hedefe göndermenin mümkün olacağına inanıyorum.


3

Aslında, 'en iyi' (birisinin iddia edebileceği) çözümü, @DaveCheney’in önerdikleriyle ve nihayet kullanıcı7321’in yaptıklarının bir birleşimi , ayrıca önereceğim üçüncü bir eylem:

  1. Syslogd'un cron ile ilişkili günlük iletilerini / var / log / syslog dosyasına eklemesini engelleme
  2. Cron günlüğü iletilerinin bir yere kaydedildiğinden emin olmak (özellikle, / var / log / cron) + cron günlüğü için günlük dönüşünü sağlamak.
  3. Syslogd'un cron ile ilgili log mesajları / var / log / messages dosyasına eklemesini engellemek

Gözlerinde farklı /etc/syslog.conf, bu önerilerin kombinasyonu aşağıdaki gibi bir şey değiştirir:

*.*;cron,auth,authpriv.none                         -/var/log/syslog
auth,authpriv.none;daemon.none;mail,news.none       -/var/log/messages

içine:

cron.*                                              /var/log/cron.log
*.*;cron,auth,authpriv.none                         -/var/log/syslog
auth,authpriv.none;cron,daemon.none;mail,news.none  -/var/log/messages

Hem cron hem de syslogd servislerini zorla yeniden yüklemeyi (veya yeniden başlatmayı) unutmayın; örneğin:

/etc/init.d/syslogd force-reload
/etc/init.d/cron force-reload

Not: Bu da rsyslogd ile çalışır.


En iyi çözüm, @dfc'nin önerdiği şeydir, yani kütüğü ilk etapta oluşturmaz.
ntd
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.