Linux Log Dosyaları Nasıl Temizlenir? Güvenli Log Temizleme Rehberi

sadıkkayahan · 28 Eylül 2026 · 1 görüntülenme · 0 cevap

Linux sunucuda log dosyalarını temizlemek için önce hangi logların disk alanını tükettiğini tespit etmek, ardından ilgili servise uygun temizleme veya log rotation yöntemini kullanmak gerekir. /var/log klasörünü topluca silmek doğru bir yöntem değildir ve hata ayıklama ile güvenlik açısından önemli kayıtların kaybolmasına neden olabilir.


İlk olarak disk durumunu kontrol edin:

df -h

Ardından log klasörünün boyutuna bakın:

du -sh /var/log

Alt klasörleri boyutlarına göre incelemek için:

sudo du -h --max-depth=1 /var/log | sort -hr

kullanabilirsiniz.

Linux log dosyaları nerede bulunur?

Birçok Linux dağıtımında sistem ve servis loglarının önemli bir bölümü:

/var/log

altında bulunur.

Burada sisteme göre:

- Nginx logları
- SSH ve authentication kayıtları
- Paket yöneticisi logları
- Sistem logları
- Uygulama logları
- Döndürülmüş eski loglar

bulunabilir.

systemd kullanan sistemlerde bazı kayıtlar ayrıca journald tarafından binary journal formatında tutulur.

En büyük log dosyaları nasıl bulunur?

Örneğin /var/log içerisinde 100 MB'den büyük normal dosyaları aramak için:

sudo find /var/log -type f -size +100M -print 2>/dev/null

kullanılabilir.

Dosyaların boyutlarını görmek için:

sudo du -ah /var/log 2>/dev/null | sort -hr | head -30

komutu da faydalı olabilir.

Bu aşamada yalnızca hangi logların büyüdüğünü tespit edin.

Log dosyasını doğrudan silmek doğru mu?

Her zaman değil.

Çalışan bir servis log dosyasını açık tutuyor olabilir. Dosyayı rm ile silmek servis açısından beklenmeyen davranışlara yol açabilir ve bazı durumlarda disk alanı process dosyayı kapatana kadar geri kazanılmayabilir.

Bu nedenle aktif loglarda çoğunlukla:

- Log rotation
- Servisin kendi log yönetimi
- Kontrollü truncate
- Journal temizleme araçları

tercih edilmelidir.

Log dosyasını boşaltmak için truncate kullanılabilir mi?

Belirli bir düz metin log dosyasının içeriğini silmeden dosyanın kendisini korumak gerekiyorsa uygun yetkilerle:

sudo truncate -s 0 /dosya/yolu.log

kullanılabilir.

Örneğin özel bir uygulamanın log dosyası için bu yöntem kullanılabilir.

Ancak dosyanın gerçekten temizlenmesinin güvenli olduğundan emin olun.

Önemli hata veya güvenlik kayıtlarını temizlemeden önce gerekiyorsa yedeğini alın.

Nginx logları nasıl kontrol edilir?

Nginx logları çoğunlukla:

/var/log/nginx

altında bulunur.

Boyut kontrolü:

du -sh /var/log/nginx

Dosyaları görmek için:

ls -lh /var/log/nginx

kullanabilirsiniz.

Genellikle:

access.log

ve:

error.log

gibi dosyalar bulunur.

Bu dosyaların sürekli büyümesi yoğun trafik veya tekrarlanan uygulama hatalarının işareti olabilir.

Nginx loglarını direkt silmek gerekir mi?

Genellikle log rotation mekanizmasının kullanılması daha doğru yaklaşımdır.

Birçok Linux kurulumunda Nginx için logrotate yapılandırması bulunur.

Kontrol etmek için:

ls /etc/logrotate.d/

ve uygun sistemlerde:

cat /etc/logrotate.d/nginx

kullanılabilir.

Bu yapılandırma eski logların belirli aralıklarla döndürülmesini ve gerektiğinde sıkıştırılmasını sağlar.

logrotate nedir?

logrotate, büyüyen log dosyalarını otomatik olarak yönetmek için kullanılan araçtır.

Örneğin:

access.log

belirli bir zamanda döndürülerek:

access.log.1

haline gelebilir.

Daha eski kayıtlar sıkıştırılarak:

access.log.2.gz

gibi saklanabilir.

Belirli bir süre veya sayı sonrasında eski loglar kaldırılabilir.

Bu sayede tek bir log dosyasının sınırsız büyümesi engellenir.

logrotate yapılandırması nasıl test edilir?

Genel yapılandırmanın ne yapacağını debug modunda incelemek için:

sudo logrotate -d /etc/logrotate.conf

kullanılabilir.

Bu yöntem gerçek rotasyonu uygulamadan yapılandırmayı değerlendirmeye yardımcı olur.

Üretim sunucusunda logrotate işlemlerini zorla çalıştırmadan önce yapılandırmayı kontrol etmek daha güvenlidir.

systemd journal ne kadar alan kullanıyor?

Journal kullanımını görmek için:

journalctl --disk-usage

komutunu çalıştırabilirsiniz.

Örneğin journal kayıtları birkaç GB alan kullanıyorsa saklama politikasını gözden geçirmek isteyebilirsiniz.

Eski journal kayıtları nasıl temizlenir?

Örneğin yedi günden eski arşivlenmiş journal kayıtlarını temizlemek için:

sudo journalctl --vacuum-time=7d

kullanılabilir.

Boyuta göre sınırlandırmak için örneğin:

sudo journalctl --vacuum-size=500M

kullanılabilir.

Buradaki değerleri kendi sunucunuzun log saklama ihtiyacına göre belirlemelisiniz.

Üretim ve güvenlik incelemelerinde geçmiş loglara ihtiyaç duyulabileceğini unutmayın.

Journal loglarının sürekli büyümesi nasıl önlenir?

Kalıcı çözüm yalnızca belirli aralıklarla manuel temizlik yapmak değildir.

journald yapılandırmasında saklanabilecek maksimum disk alanı gibi sınırlar tanımlanabilir.

Yapılandırma dağıtıma göre değerlendirilmelidir.

Değişiklik yapmadan önce mevcut ayarları ve sunucunun log gereksinimlerini kontrol edin.

PM2 logları nasıl temizlenir?

Node.js uygulamalarında PM2 logları da ciddi alan kullanabilir.

Boyut kontrolü:

du -sh ~/.pm2/logs

PM2'nin mevcut loglarını boşaltmak için:

pm2 flush

kullanılabilir.

Ancak önce:

pm2 logs

ile sürekli tekrarlanan bir hata olup olmadığını kontrol etmek önemlidir.

Örneğin uygulama saniyede onlarca kez aynı hatayı yazıyorsa pm2 flush yalnızca geçici olarak alan açacaktır.

PM2 loglarının tekrar büyümesi nasıl engellenir?

PM2 log rotation yapılandırması kullanılabilir.

Amaç:

- Log dosyasının maksimum boyutunu sınırlamak
- Eski logları döndürmek
- Belirli sayıda eski kayıt saklamak
- Gereksiz logların sonsuza kadar büyümesini engellemek

olmalıdır.

Ayrıca uygulamanın production ortamında gereksiz debug mesajlarını sürekli yazmadığından emin olun.

Uygulama logları proje klasöründe olabilir

Her log /var/log altında bulunmaz.

Örneğin uygulamanız:

/var/www/site/logs

gibi kendi klasörüne log yazıyor olabilir.

Proje dizininin kullanımını:

du -h --max-depth=1 /var/www/site | sort -hr

ile kontrol edebilirsiniz.

Log klasörü büyük görünüyorsa içerisindeki dosyalar ayrıca incelenmelidir.

Eski sıkıştırılmış loglar silinebilir mi?

Örneğin:

access.log.5.gz

gibi dosyalar eski log kayıtları olabilir.

Bunların ne kadar süre saklanacağı:

- Hata araştırma ihtiyacı
- Güvenlik politikası
- Yasal gereksinimler
- Disk kapasitesi

gibi faktörlere bağlıdır.

Gerekmeyen eski logların kontrollü olarak kaldırılması mümkündür ancak bunun otomatik olarak logrotate gibi bir sistemle yönetilmesi daha sağlıklıdır.

Silinen log neden hâlâ disk alanı kullanıyor?

Bir servis dosyayı açık tutarken logu silerseniz dosya dizinden kaybolduğu halde process tarafından açık tutulabilir.

Bunu kontrol etmek için:

sudo lsof +L1

kullanabilirsiniz.

Büyük bir silinmiş dosya görünüyorsa hangi servisin tuttuğunu belirleyin.

Gerekliyse ilgili servisi kontrollü şekilde yeniden yüklemek veya yeniden başlatmak gerekebilir.

Sunucuyu yalnızca disk alanı geri gelsin diye doğrudan reboot etmek genellikle ilk tercih olmamalıdır.

Logları temizledikten sonra disk nasıl kontrol edilir?

İşlem sonrasında:

df -h

komutunu tekrar çalıştırın.

Ardından:

du -sh /var/log

ile log dizininin yeni boyutunu kontrol edin.

Beklenen alan açılmadıysa:

sudo lsof +L1

kontrolü yapılabilir.

Logların aşırı büyümesinin nedeni bulunmalı

Örneğin Nginx error.log birkaç saat içerisinde gigabaytlarca büyüyorsa sorun log dosyasının kendisi değildir.

Asıl problem:

- Uygulama sürekli hata veriyor olabilir.
- Backend'e bağlantı kurulamıyor olabilir.
- Bot trafiği olabilir.
- Yanlış yapılandırma bulunabilir.
- Uygulama aynı hatayı döngü halinde yazıyor olabilir.

Sadece log dosyasını temizlemek sorunu geçici olarak gizler.

Log temizlerken neden dikkatli olunmalı?

Loglar yalnızca gereksiz dosyalar değildir.

Bir sunucuda:

- Uygulama hatalarının bulunması
- Yetkisiz erişim girişimlerinin araştırılması
- SSH girişlerinin incelenmesi
- Sunucu problemlerinin teşhis edilmesi
- Olay sonrası güvenlik analizi

için kritik olabilirler.

Bu nedenle önemli bir olay araştırılırken logları temizlemek değerli kanıtların kaybolmasına neden olabilir.

Linux log temizliği için güvenli sıra

Genel olarak şu sıra kullanılabilir:

1. df -h ile disk kullanımını kontrol edin.
2. du -sh /var/log ile log boyutuna bakın.
3. Büyük logları tespit edin.
4. Logun hangi servise ait olduğunu belirleyin.
5. Gerekli kayıtları yedekleyin.
6. Servisin kendi log yönetimini kontrol edin.
7. logrotate yapılandırmasını inceleyin.
8. Journal kullanımı için journalctl --disk-usage çalıştırın.
9. PM2 kullanıyorsanız PM2 loglarını kontrol edin.
10. Temizlikten sonra df -h ile sonucu doğrulayın.
11. Logların neden aşırı büyüdüğünü araştırın.

Kaçınılması gereken yöntemler

Özellikle:

rm -rf /var/log/*

gibi toplu silme komutları kullanılmamalıdır.

Benzer şekilde yalnızca disk dolduğu için ne olduğunu bilmediğiniz sistem kayıtlarını silmek doğru değildir.

Log temizliğinin amacı bütün kayıtları yok etmek değil, gereksiz büyümeyi kontrollü şekilde yönetmektir.

Özetle, Linux sunucuda log temizlerken önce hangi kayıtların alan kullandığını belirlemek gerekir. Nginx ve diğer servislerde logrotate, systemd kayıtlarında journalctl, PM2 uygulamalarında ise PM2'nin kendi log yönetimi kullanılabilir.

Kalıcı çözüm ise sürekli manuel log silmek değil, log rotation ve saklama politikası oluşturmak ve aşırı log üreten asıl hatayı düzeltmektir.