Tüm içeriğini el ile sildikten sonra Apache bir günlük dosyasına yazmayı reddediyor


9

Apache , içeriğini el ile sildikten sonra neden günlük dosyalarına ( ErrorLog/ CustomLogolanları) yazmayı reddediyor ?

Apache yeniden başlatılıncaya kadar bu günlük dosyalarına yeniden yazılmaz.

Neden böyle? Bir günlük dosyasını Apache'yi yeniden başlatmak zorunda kalmadan nasıl güvenli bir şekilde temizleyebilirim?

Ubuntu 10.04'te Apache 2.2.14 var.


İçeriği nasıl silebilirsiniz?
Dom

@Dom Ben sadece vim ile açın, "tüm içeriği siler" dG "yapmak, ve sonra"! Wq "ile kaydedin. Sahiplik / grup / izinler değiştirilmez.
AtomicFault

3
@AtomicFault Prrrobably çünkü Apache günlüklerini bu şekilde döndürmeniz gerekmiyor . logrotateApache'ye uygun bir yeniden yükleme / yeniden başlatma sinyali gönderen bir şey kullanıyor olmalısınız (aşağıdaki Pedro'nun cevabına bakın). Nickgrim, günlüklerinizin durmasının arkasındaki "neden" i kapattı - Apache hala eski inode'a yazıyor (artık dosya sistemine artık erişebileceğiniz herhangi bir yerde bağlı değil)
voretaq7

Yanıtlar:


14

Kısa bir test yaptım:

$ echo vim test > vimtest
$ ls -i vimtest
35149 vimtest
$ vim vimtest
<dG, :wq>
$ ls -i vimtest
35148 vimtest

Not vimtest(eski dosyayla aynı ada sahip olsa) aslında böylelikle farklı bir dosya düzenledikten sonra farklı inode-numarası vardır ve olduğunu.

Yani, dosyayı vim ile düzenlediğinizde, eski dosyayı siler ve aynı ada sahip yeni bir dosya oluşturur. Gördüğünüz soruna Apache hala eski (silinmiş) dosyaya yazıyor (bunu kontrol edebilirsiniz lsof).

Bir günlük dosyasını gerçekten kırpmak istiyorsanız, düşünün truncate -s 0 /path/to/file.log(yerinde kısalmış gibi görünüyor)


2
echo> /path/to/file.log ayrıca çalışıyor

8

Apache2 günlük dosyalarının döndürülmesini zorla öneririm :

$ sudo logrotate -f /etc/logrotate.d/apache2

Eğer bakarsanız , günlük dosyasını sildikten sonra yapılandırmanın yeniden yüklenmesi gerektiğini /etc/logrotate.d/apache2görürsünüz Apache2:

$ sudo /etc/init.d/apache2 reload

Ubuntu'da alternatif olarak şunları yapabilirsiniz:

$ sudo service apache2 reload
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.