Bir logrotate kontrolünü manuel olarak yapmak mümkün müdür?


541

Logrotatın bir yinelemesini belirli bir aralıkta zamanlamadan manuel olarak çalıştırmak mümkün müdür?


3
Logrotate ile ilgili sorun, bir Global yapılandırma dosyası olması ve global yapılandırma dosyasında ayarlanan seçenekleri uygularken tek bir günlük döndürme alt yapılandırma dosyasını çalıştırmanıza izin VERMEMEKTEDİR. Bu, sadece bir günlük rotasyon dosyası kontrolünü çalıştırmak için güzel bir yolu yok, aynen her gece cron'dan çalıştırıldığı gibi. 'Bu günlük dosyalarına sınırla' seçeneği ile yapabilir veya daha iyisi 'genel yapılandırmayı çalıştırabilir, ancak yalnızca bu alt yapılandırma dosyasını dahil edebilir'.
anthony

Yanıtlar:


717

Evet: logrotate --force $CONFIG_FILE


115
--forceboyut, yaş vb. gibi belirtilen ölçütleri karşılamasalar bile dosyaları döndüreceklerini unutmayın
xofer

4
Logrotate config dosyasını /etc/logrotate.d/custom.conf dosyasına yerleştirirseniz bunun anlamı, günlüğün otomatik olarak dönmesi gereken bir boyut / saat belirtmeniz gerekmez mi? Veya otomatik olarak dönmesini istemiyorsanız yapılandırmayı farklı bir klasöre mi yerleştirmelisiniz?
Damainman

18
"Bildirim" kriterleri "--force" tarafından göz ardı edilmez. Bu bir süre beni boğdu, bu yüzden bu @xofer deyimi bir istisna olarak söz.
thelogix

16
Hepsini logrotate --force /etc/logrotate.d/sadece dizin adıyla döndürebilirsiniz
fcm

1
--forceDosyalar ölçütleri karşılamasa bile (yaş, boyut vb.) Döndürmeyi zorlayacağı doğrudur , ancak logrotate -dbunun ortaya çıkmayacak gerçek sorunları tespit etmenin tek yolu olduğunu düşünün (örneğin, sunucum bitiyorsa) Logrotate nedeniyle aylarca çalışmama alanı ... ve hatalar --forceolduğunu File exists
anladım.Bu

559

logrotate -d [your_config_file] hata ayıklama modunu çağırır, ne olacağına dair ayrıntılı bir açıklama verir, ancak günlük dosyalarına dokunulmaz.


81
buraya "logrotate conf'imi nasıl test edebilirim?" gibi bir sorunun cevabını arayanlar Bu bir cevap olarak alabilir, çünkü sadece conf TESTS
kommradHomer

yaklaşımınızla ilgili değil, denedim logrotate --forceve iyi çalışıyor.
Benyamin Jafari

122

Belirli bir dizini veya arka plan programının günlük dosyalarını zorla çalıştırmak istiyorsanız, yapılandırmayı genellikle içinde bulabilirsiniz /etc/logrotate.dve bunlar tek başına çalışır.

Belirtilen genel yapılandırmanın /etc/logrotate.confgeçerli olmayacağını unutmayın, bu nedenle bunu yaparsanız /etc/logrotate.d/[servicename]özel olarak yapılandırma dosyasında istediğiniz tüm seçenekleri belirttiğinizden emin olmalısınız .

-dNe olacağını görmek için deneyebilirsiniz :

logrotate -df /etc/logrotate.d/nginx

Sonra çalıştırabilirsiniz (örnek olarak nginx kullanarak):

logrotate -f /etc/logrotate.d/nginx

Ve sadece nginx günlükleri döndürülecektir.


1
Bu iyi ve güzel, ancak "/etc/logrotate.conf" dosyasındaki genel ayarları kaybedersiniz. Genel ve özel logrotate dosyalarını birleştirmek için bir komut dosyası yazdım ve sonra bu sorunu çözmek için kullanın. (cevabımı gör).
Anthony

Kullanmak logrotate -d /etc/logrotate.confda dahil olan diğer conf dosyaları üzerinden çalışacaktır.
wmassingham

61

Ayrıntılı + kuvvet modunda çalıştırmak isteyebilirsiniz.

logrotate -vf /etc/logrotate.conf


36

Tüm logrotate'i çalıştırmanın yolu:

logrotate -f /etc/logrotate.conf

diğer logrotate yapılandırmalarını da içeren birincil logrotate dosyasını çalıştıracak


21

Belirtilen logrotate'i çalıştırmanın yolu olan aşağıdaki komutu verin:

logrotate -vf /etc/logrotate.d/custom

Seçenekler:

-v: işlemi göster

-f: zorla çalıştırma

görenek: kullanıcı tanımlı günlük ayarı

örneğin: mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}

aslında tam bir örnek sağlamak için artı 1. PS Logrotate'in dosyalara gerçekte ne yaptığını nasıl belirleyebiliriz ?
personal_cloud

7

düzenlemek /var/lib/logrotate.status test etmek istediğiniz günlük dosyasındaki 'son döndürme' tarihini sıfırlamak için.

Sonra koş logrotate YOUR_CONFIG_FILE.

Veya --force bayrağını kullanabilirsiniz, ancak logrotate.status dosyasını düzenlemek, döndürülüp neyin döndürülmediği konusunda size daha fazla hassasiyet verir.


Bu /var/lib/logrotate.statusdosya Debian Squeeze'de mevcut değil.
Lashae

/ Var / lib / logrotate / status komutunu deneyin. Bunun debian / redhat bir şey olup olmadığından ya da "." "/" koymalıydım.
Ben Aveling

2

Sorunu çözmek için bir kabuk betiği oluşturuldu.

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

Bu komut dosyası "/etc/logrotate.d" dosyasında bulunan tek logrotate alt yapılandırma dosyasını çalıştırır, ancak "/etc/logrotate.conf" genel yapılandırma dosyasına genel ayarları dahil eder. Test etmek için diğer otpionları da kullanabilirsiniz ...

Örneğin...

  logrotate_one -d syslog
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.