Seseorang hanya bertanya kepada saya 'berapa lama kita harus menyimpan log untuk aplikasi kita', dan jawaban saya adalah 'sampai disk penuh' karena tidak ada alasan untuk membuangnya selain kehabisan ruang.
Namun, standar logrotate ingin kita menentukan periode tertentu + jumlah rotasi. Adakah hal serupa yang akan membuat kita mengatakan "putar setiap hari, dan simpan sebanyak mungkin sejarah yang Anda inginkan hingga hanya ada ruang kosong 5%"?
Platformnya adalah Redhat Linux.
Jawaban:
Anda mungkin dapat menggunakan arahan firstaction atau lastaction untuk memanggil skrip shell yang menguji ruang kosong disk, dan kemudian menjalankan penghapusan pada file tertua.
Memperbarui:
Berikut posting Stackoverflow pada jenis skrip yang dapat Anda jalankan:
/programming/7523059/remove-oldest-file-in-repository
sumber
logrotate sendiri tidak memiliki opsi seperti itu. Anda dapat menambahkan skrip cron yang menemukan log terlama untuk dihapus setiap kali ruang kosong berada di bawah kriteria Anda. Anda juga dapat melakukan validasi lainnya. Namun, mendapatkan disk terlalu penuh sepanjang waktu bukanlah ide yang baik karena sistem tidak akan dapat membuat file sementara yang besar dan dapat menyebabkan kegagalan aplikasi.
sumber
Saya hanya ingin menunjukkan ada kasus di mana Anda tidak ingin log Anda mengisi semua ruang disk yang tersedia. Saya telah berurusan dengan beberapa host dengan direktori disediakan / var tipis dan menjaga log ke ukuran tertentu sangat penting. Kami menggunakan pekerjaan kroni dalam hubungannya dengan logrorate untuk menjaga ukuran. Hal serupa dapat digunakan di lingkungan Anda, meskipun server pusat log seperti splunk atau syslog-ng mungkin akan menjadi pilihan yang lebih baik.
sumber
Seperti yang disarankan oleh @cjc, Anda dapat menggunakan aksi pertama. Lihat contoh ini:
Dalam contoh ini Anda menghapus file lebih besar dari 1GB dari partisi / mnt / pengguna jika ruang yang digunakan partisi lebih dari 50% .
sumber