Logrotate “günlük” ile tam olarak nasıl başa çıkıyor?


30

Sistemlerimdeki zaman damgalarına bakılırsa, logrotate, logrotate cron tarafından çalıştırıldığında günlük log rotasyonunu gerçekleştirir. Ancak, daha önce çalıştırırsanız, dosyaları döndürmez. Logrotate onları döndürüp döndürmemesi gerektiğini, geçmişi sakladığını veya belki de zaman damgası kullandığını nasıl biliyor?

Yanıtlar:


32

Sanırım bu, benim durumum olan devlet dosyasının içeriği /var/lib/logrotate.status. Her dosyanın bir satırına sahip olduğu son satırının döndüğü tarih; logrotate komutunu, belirli bir dosyanın döndürüleceği bir tarihte çalıştırırsanız, geçerli tarih ile dosyadaki tarih arasındaki gün sayısı göz önüne alındığında (günlük 1, haftalık 7, vb.), dosya döndürülür.

logrotate günün hangi saatinde çalıştığını umursamıyor; genellikle 2355'te çalışsa bile, bunun yerine 0130'da çalıştırsanız, günlük olarak işaretlenmiş ve dün yapılan en son yapılan dosyaları yine de döndürür; ancak bunu yapmak bugünün tarihini durum dosyasına koyacak (herhangi bir döndürülmüş dosyaya karşı), bu nedenle 2355'teki ikinci bir çalıştırma hiçbir şey yapmaz.


1
Hmm .. Yani sadece şu durumda döner: geçerli tarih> tarih /var/lib/logrotate/status(dosya benim durumumda olduğu gibi).
Kyle Brandt

2
Bence, sadece son çalıştırılmasından bu yana 24 saat geçtiyse, durum dosyasının çalışma zamanını inceleyerek çalıştığı bir şey yapıyor. Bütün bir gün geçtikten ve yasal olarak herhangi bir şey yapabileceğine karar verildikten sonra, dosyanın içindeki tarih alanlarına dayanarak GÜNLÜK, HAFTALIK vb. Kararlar alır.
MadHatter

4
Peki o dosyadaki tarihi kullanıyor gibi görünüyor. Günü bir gün tekrar statü dosyasına koydum ve koştum ... döndürdüm ..
Kyle Brandt

Daha yeni geri dönüp logrotate'i dürttüğüm için sanırım hatalıydım ve yukarıda yazdığınız şey doğru. Halen, halihazırda durum dosyasının zaman damgasına bakarak çalıştırılıp çalıştırılmadığına karar verir; yoksa, son döndürme tarihlerini durum dosyasından ayıklamaya devam eder ve buna göre davranır. Ben sadece vi ile logrotate için yalan söyledim ve son olarak 2355’de, munin kütüklerimi döndürdüğü zaman çalıştığına ikna etmek için dokunmuştum. Tekrar çalıştırılması, 24 saatten daha az olmasına rağmen, onları döndürdü ve durum dosyasını buna göre güncelledi.
MadHatter

Şimdiye kadar yaptığım bir dizi testle (şu anki günlüğümü dilimlemek pazar gününden sekiz yol alıyor, ama kimin umrunda!
MadHatter

11

Logrotate man sayfasından:

Normalde, logrotate günlük cron işi olarak çalıştırılır. Bir günlüğün ölçütü, günlüğün ölçütüne dayanmadığı ve gün başına bir kereden fazla çalıştırılmadığı veya -f veya -force seçeneği kullanılmadığı sürece bir günlüğü bir kereden fazla değiştirmez.


1
cron.daily'ın ne zaman çalıştırıldığını görmek için buraya gidin .
Trevor Boyd Smith
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.