Bagaimana cara logrotate menangani file yang terbuka? Dapatkah logrotate memutar file yang telah dibuka oleh suatu proses?
Bagaimana cara logrotate menangani file yang terbuka? Dapatkah logrotate memutar file yang telah dibuka oleh suatu proses?
Jawaban:
Untuk aplikasi yang tidak menerima sinyal dari logrotate seperti dijelaskan Rory, saya menggunakan beberapa metode.
Keputusan yang akan digunakan tergantung pada ukuran file log dan kebutuhan log yang mulus. Itu akan menjadi analisis risiko Anda sendiri. Namun, untuk memberikan contoh, saya menggunakan restart post-rotate pada log tertentu di mana saya sebenarnya harus menggunakan copytruncate. Namun, file-file tersebut seringkali beberapa pertunjukan dan salinannya bisa memakan waktu yang cukup lama sehingga kehilangan satu atau dua detik setiap malam lebih disukai.
Sepertinya saya mungkin menginginkan yang berikut, tetapi masih tertarik pada keahlian siapa pun tentang topik ini:
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 akan mengirimkan sinyal yang benar ke proses untuk memberitahukannya untuk membuka kembali file log. Ini bekerja di luar kotak untuk hal-hal seperti apache atau mysql.
Anda dapat melihatnya di skrip postrotate untuk apache. Jika Anda memiliki daemon Anda sendiri, dan Anda ingin logrotate bekerja dengannya, maka pastikan ia mendengarkan sinyal tertentu dan membuka kembali file log.
Jika Anda tidak dapat mengubah program, maka Anda dapat melihat apakah daemon memiliki cara untuk membersihkan log secara otomatis. Atau tambahkan prerotate yang menghentikan server, dan postrotate yang memulai lagi.