Mengapa Apache menolak untuk menulis file log ( ErrorLog
/ CustomLog
yang) setelah saya secara manual menghapus isinya?
Itu tidak akan menulis ke file log itu lagi sampai setelah saya me-restart Apache.
Mengapa demikian? Bagaimana saya bisa membersihkan file log dengan aman tanpa harus me-restart Apache?
Saya memiliki Apache 2.2.14 di Ubuntu 10.04.
apache-2.2
ubuntu
Kesalahan Atomic
sumber
sumber
logrotate
yang mengirim sinyal reload / restart ke Apache (Lihat jawaban Pedro di bawah). Nickgrim membahas "mengapa" di balik log Anda berhenti - Apache masih menulis ke inode lama (yang tidak lagi terhubung ke sistem file di mana pun Anda bisa mendapatkannya)Jawaban:
Saya baru saja melakukan tes singkat:
Catatan yang
vimtest
memiliki nomor inode yang berbeda setelah diedit, dan dengan demikian sebenarnya file yang berbeda (meskipun dengan nama yang sama dengan file lama).Jadi, ketika Anda mengedit file dengan vim itu menghapus file lama, dan membuat yang baru dengan nama yang sama. Masalah yang Anda lihat disebabkan oleh Apache masih menulis ke file lama (dihapus) (Anda dapat memeriksanya dengan
lsof
).Jika Anda benar-benar ingin memotong file log, pertimbangkan
truncate -s 0 /path/to/file.log
(yang tampaknya memotong di tempat)sumber
Saya akan merekomendasikan memaksa rotasi file log Apache2 dengan:
Jika Anda melihat ke dalam
/etc/logrotate.d/apache2
, Anda akan melihat bahwaApache2
konfigurasi harus dimuat ulang setelah menghapus file log-nya dengan:Di Ubuntu Anda dapat melakukan alternatif:
sumber