mengapa kita harus menggunakan create dan copytruncate bersama?

40

The Geek Stuff memiliki contoh tentang logrotate. copytruncateakan menyalin dan memotong file log asli.

Lalu mengapa kita harus menggunakan create? File log asli belum dihapus.

/tmp/output.log {
  size 1k
  copytruncate
  create
  compress
  compresscmd /bin/bzip2
  compressext .bz2
  rotate 4
  maxage 100
}

Pertanyaan lain adalah apa gunanya maxage 100? The rotate 4direktif akan menghapus file log lama setelah 4 rotasi.

Majid Azimi
sumber
4
Ya, itu tidak masuk akal dan man logrotatebahkan mengatakan demikian: " copytruncate : [...] Ketika opsi ini digunakan, opsi buat tidak akan berpengaruh, karena file log lama tetap di tempatnya."
Ulrich Schwarz
1
maxage 100akan menghapus file yang diputar ketika sudah lebih dari 100 hari dan file saat ini diputar; bahkan ketika ada sedikit 4file yang diputar.
Lutz Prechelt

Jawaban:

57

Itu mungkin kesalahan, hanya ditemukan dalam satu contoh di tutorial itu. Semua contoh lain miliki copytruncatetanpa createopsi. logrotate Halaman manual juga menyatakan bahwa itu akan benar-benar diabaikan :

copytruncate

Potong file log asli ke ukuran nol di tempat setelah membuat salinan, alih-alih memindahkan file log lama dan secara opsional membuat yang baru. Ini dapat digunakan ketika beberapa program tidak dapat diberitahu untuk menutup logfile-nya dan dengan demikian dapat terus menulis (menambahkan) ke file log sebelumnya selamanya Perhatikan bahwa ada irisan waktu yang sangat kecil antara menyalin file dan memotongnya, sehingga beberapa data logging mungkin hilang. Ketika opsi ini digunakan, opsi buat tidak akan berpengaruh, karena file log lama tetap di tempatnya.


Mengenai maxage, saya pikir ini dapat berguna misalnya untuk file log yang dapat kosong untuk beberapa periode rotasi (hari / minggu / bulan) - jika Anda menggunakan notifempty, file log kosong tidak akan diputar, sehingga Anda dapat memiliki file yang diputar terlalu lama masih ada di tempat .

Marki555
sumber