Logrotate nasıl açık dosyaları işler? Logrotate, bir işlemin açtığı dosyaları döndürebilir mi?
Logrotate nasıl açık dosyaları işler? Logrotate, bir işlemin açtığı dosyaları döndürebilir mi?
Yanıtlar:
Rory'nin açıkladığı gibi logrotate gelen sinyalleri kabul etmeyen uygulamalar için, birkaç yöntem kullanıyorum.
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.
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.
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.