Bagaimana saya bisa mengatur logrotate untuk memutar log setiap jam?

23

Menurut Unix dan Linux Administrasi Handbook dan man, logrotate memiliki pilihan untuk daily, weeklydan monthly, tetapi ada cara untuk menambahkan hourlypilihan?

Posting blog ini menyebutkan Anda dapat mengatur size 1dan menghapus opsi waktu (misalnya:) dailydan kemudian secara manual menelepon logrotatedengan cron- saya kira sesuatu seperti

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

tetapi apakah ada solusi yang lebih elegan untuk memutar log setiap jam?

cwd
sumber
Yakin. Apa sistem operasi Anda, versi apa?
Nils
ubuntu 10.04 dan 11
cwd

Jawaban:

20

Tergantung pada OS Anda. Beberapa (semua?) Distribusi Linux memiliki direktori /etc/cron.hourlytempat Anda dapat meletakkan pekerjaan cron untuk dieksekusi setiap jam.

Lainnya memiliki direktori /etc/cron.d/. Di sana Anda dapat menempatkan cron-job yang akan dieksekusi sebagai pengguna khusus dengan pengaturan cron pada entri crontab (dan Anda harus menentukan nama pengguna).

Jika Anda menggunakan salah satu dari ini alih-alih skrip rotasi log standar, /etc/cron.daily/Anda harus menyalin skrip itu di sana dan cp /dev/nullke posisi semula. Jika tidak maka akan diaktifkan kembali oleh pembaruan patch logrotate.

Untuk rotasi per jam yang tepat, perhatikan juga bahwa dateextarahan tidak diatur. Jika demikian, secara default file yang diputar pertama akan mendapatkan ekstensi tanggal saat ini seperti YYYYMMDD. Kemudian, logrotate waktu kedua akan aktif dalam hari yang sama, itu hanya melewatkan rotasi bahkan jika sizeambang telah melebihi.

Alasannya adalah bahwa nama baru file yang akan diputar sudah ada, dan logrotate tidak menambahkan konten ke file lama yang ada. Misalnya pada RHEL dan CentOS, dateextarahan diberikan secara default di /etc/logrotate.conf. Setelah menghapus atau mengomentari baris itu, file yang diputar hanya akan mendapatkan nomor berjalan sebagai ekstensi hingga mencapai rotatenilai. Dengan cara ini, dimungkinkan untuk melakukan beberapa rotasi sehari.

Nils
sumber
5

Hanya dengan menambahkan jawaban Nils, jika mengubah lokasi logrotateskrip pada kotak Debian atau Ubuntu, mungkin lebih aman untuk digunakan dpkg-divertdaripada hanya menyalin file dan menyalin /dev/nullke posisi semula misal::

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate
boltronics
sumber
Saya tidak tahu tentang ini dan saya sudah menggunakan Ubuntu selama bertahun-tahun. Terima kasih. :)
Vaughany
2

Satu opsi lain akan menambahkan perintah logrotate ke daftar crontab. Maka itu akan dieksekusi untuk setiap jam.

crontab -e

tambahkan baris di bawah ini ke daftar crontab

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
Wasantha Herath
sumber