Logrotate dan Buka File

21

Bagaimana cara logrotate menangani file yang terbuka? Dapatkah logrotate memutar file yang telah dibuka oleh suatu proses?

Kyle Brandt
sumber

Jawaban:

7

Untuk aplikasi yang tidak menerima sinyal dari logrotate seperti dijelaskan Rory, saya menggunakan beberapa metode.

  1. Gunakan opsi copytruncate
  2. Tambahkan pernyataan pasca-putar untuk memulai kembali layanan

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.

Scott Pack
sumber
Maaf karena beign terlambat, tapi saya rasa saya bisa menghemat waktu untuk orang lain yang mencari masalah ini. Lihatlah pendekatan lain untuk menyelesaikan ini. unix.stackexchange.com/a/122942/189725
Victor
17

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. 
Kyle Brandt
sumber
1
Ini seperti melakukan "cp something.log something.log.1;:> something.log" sehingga file menjadi kosong tetapi file ditangani tidak rusak. Masalahnya adalah waktu antara 2 perintah, Anda bisa kehilangan beberapa baris log
radius
5

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.

Rory
sumber
Oke, tidak berpikir saya akan mendapatkan pengembang untuk melakukan itu, tapi bagus untuk mengetahui apa standar adalah :-)
Kyle Brandt