Günlükleri saatlik olarak döndürmek için logrotate'i nasıl ayarlayabilirim?


23

Unix ve Linux İdaresi Handbook göre ve maniçin, logrotate sahiptir seçenekleri daily, weeklyve monthlybir eklemek için bir yoldur, ama orada hourlyseçeneği?

Bu blog yayını ayarlayabileceğiniz bahseder size 1ve zaman seçeneğini kaldırın (örn: daily) ve daha sonra elle arama logrotateile cron- Ben böyle bir şey herhalde

logrotate -f /etc/logrotate.d/my-hourly-file

Ancak günlükleri saatte bir döndürmek için daha şık bir çözüm var mı?


Emin. İşletim sisteminiz nedir, hangi sürüm?
Nils

ubuntu 10.04 ve 11
Ocak'taki

Yanıtlar:


20

İşletim sisteminize bağlı olarak. Bazı (tümü?) Linux dağıtımları, /etc/cron.hourlyher saatte bir cron işi koyabileceğiniz bir dizine sahiptir .

Diğerlerinin bir dizini var /etc/cron.d/. Burada, bir crontab girişinin normal cron ayarları ile herhangi bir özel kullanıcı olarak yürütülecek cron-işlerini koyabilirsiniz (ve kullanıcı adını belirtmeniz gerekir).

Bunlardan herhangi birini kullanıyorsanız, standart günlük döndürme komut dosyası yerine /etc/cron.daily/bu komut dosyasını oraya ve cp /dev/nullorijinal konumuna kopyalamanız gerekir . Aksi takdirde, logrotate yama güncellemesi ile yeniden etkinleştirilecektir.

Uygun saatlik dönüş için ayrıca bu özen dateextyönergesi edilir değil ayarlayın. Öyleyse, varsayılan olarak ilk döndürülen dosya, YYYYMMDD gibi geçerli tarihin uzantısını alır. Daha sonra, ikinci zaman logrotate aynı gün içinde aktif hale gelir, sizeeşik aşılmış olsa bile, sadece dönüşü atlar .

Bunun nedeni, döndürülecek dosyanın yeni adının zaten var olması ve logrotate'in içeriği eski dosyaya eklememesidir. Örneğin RHEL ve CentOS'ta, dateextdirektif varsayılan olarak verilmiştir /etc/logrotate.conf. Bu satırı kaldırdıktan veya yorumladıktan sonra, döndürülen dosyalar, rotatedeğere ulaşana kadar bir uzantı olarak çalışan bir sayı alır . Bu şekilde, günde birden fazla dönüş yapmak mümkündür.


5

Sadece Nils cevabına eklemek için, logrotatebetiğin bir Debian veya Ubuntu kutusundaki konumunu değiştiriyorsanız dpkg-divert, dosyayı kopyalamak /dev/nullve orijinal konumuna kopyalamak yerine kullanmak daha güvenlidir, örneğin:

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate

Bunu bilmiyordum ve Ubuntu'yu yıllardır kullanıyorum. Teşekkür ederim. :)
Vaughany

2

Diğer bir seçenek de logrotate komutunu crontab listesine eklemektir. Sonra her saat için yürütülür.

crontab -e

crontab listesine satırın altına ekleyin

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
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.