Saya memiliki aplikasi linux yang terus menulis informasi logging ke file log, misalnya. /var/log/application.log
. Karena aplikasi tidak memutar file secara otomatis, file log ini dapat mencapai ukuran gigabytes dalam beberapa minggu, jadi saya ingin dapat memutar file ini dengan benar
Perhatian utama saya di sini adalah untuk memutar file yang dibuka oleh aplikasi setiap saat, saya mungkin perlu:
Pindahkan file ke bentuknya yang diputar
/var/log/application.log -> /var/log/application.log.2013-01-28
Buat yang kosong
/var/log/application.log
. Obs: Pada saat ini proses aplikasi masih menulis/var/log/application.log.2013-01-28
Ubah deskriptor file dari proses aplikasi untuk kembali ke
/var/log/application.log
Jadi, apakah saya benar? Jika demikian, bagaimana saya bisa melakukan ini? (terutama mengubah bagian deskriptor file)
Jika tidak, apa cara yang benar dan bagaimana melakukannya?
dup2
deskriptor baru di atas yang lama, lalu tutup deskriptor baru.)Jawaban:
Tulis
logrotate
konfigurasi untuk digunakancopytruncate
sumber
Sebagian besar aplikasi semacam itu merespons sinyal, seperti
SIGHUP
, dan akan menutup dan membuka kembali file lognya saat menerima sinyal. Periksa dokumentasi aplikasi Anda untuk sinyal yang benar untuk dikirim.sumber