Logrotate ve Dosyaları Aç


21

Logrotate nasıl açık dosyaları işler? Logrotate, bir işlemin açtığı dosyaları döndürebilir mi?

Yanıtlar:


7

Rory'nin açıkladığı gibi logrotate gelen sinyalleri kabul etmeyen uygulamalar için, birkaç yöntem kullanıyorum.

  1. Copytruncate seçeneğini kullanın
  2. Hizmeti yeniden başlatmak için döndürme sonrası ifadesi ekleyin

Hangisinin kullanılacağına dair karar hem günlük dosyalarının boyutuna hem de sorunsuz günlüklerin gerekliliğine bağlıdır. Bu kendi tarafınızdan bir risk analizi olacak. Ancak, bir örnek vermek gerekirse, aslında bir copytruncate kullanmam gereken bazı günlüklerde döndürme sonrası yeniden başlatma kullanıyorum. Bununla birlikte, dosyalar genellikle birkaç konserdir ve kopya, her gece bir veya iki saniye kaybetmenin tercih edilmesinin yeterince uzun sürebilir.


Çok geç kaldığım için üzgünüm, ama sanırım bu soruyu arayanlara biraz zaman kazandırabilirim. Bunu çözmek için başka bir yaklaşıma bir göz atın. unix.stackexchange.com/a/122942/189725
Victor,

17

Aşağıdakileri isteyebilir gibi görünüyorum ama yine de bu konuda uzman olan herkesle ilgileniyorum:

copytruncate
              Truncate  the original log file to zero size in place after cre‐
              ating a copy, instead of moving the old log file and  optionally
              creating  a new one. 

1
Bu, "cp something.log something.log.1;:> something.log" yapmak gibi bir şeydir, böylece dosya boşalır, ancak üzerindeki dosya kilidi kırılmaz. Sorun, iki komut arasındaki zamandır, bazı kütük satırlarını kaybedebilirsiniz
yarıçapı

5

logrotate, günlük dosyalarını yeniden açmasını söylemek için prosese doğru sinyali gönderir. Apache veya mysql gibi şeyler için kutunun dışında çalışır.

Bunu apache'nin postrotate betiğinde görebilirsiniz. Kendi daemon'unuz varsa ve onunla çalışmak için logrotate istiyorsanız, belirli bir sinyali dinlediğinden ve log dosyalarını tekrar açtığından emin olun.

Programı değiştiremezseniz, arka plan programın günlükleri otomatik olarak temizlemenin bir yolu olup olmadığını görebilirsiniz. Veya sunucuyu durduran bir ön döndürme ve tekrar başlatan bir döndürme işlemi ekleyin.


Tamam, geliştiricilerin bunu yapabileceğimi sanmıyorum, ama standardın ne olduğunu bilmek güzel
Kyle Brandt
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.