M. Niyazi Alpay
M. Niyazi Alpay
M. Niyazi Alpay

Çok küçük yaştan itibaren bilgisayar sistemleriyle ilgileniyorum ve 2005 yılından beri programlama ile uğraşıyorum, PHP, MySQL, Python, MongoDB ve Linux konularında bilgi sahibiyim

 

about.me/Cryptograph

Linux İşletim Sistemi Üzerinde Toplu Olarak Log Temizliği

Linux İşletim Sistemi Üzerinde Toplu Olarak Log Temizliği

Linux işletim sistemi çalıştığı süre boyunca karşılaşılan hatalar, sistem uyarıları vs her şeyin kaydını tutmaktadır. Bu kayıtlar bir zaman sonra büyük boyutlara ulaşabiliyor. Bu da haliyle harddisk üzerinde yer kaplamakta. Bu durum ev kullanıcıları için çok bir şey farkettirmese de web sunucuları üzerinde yer sıkıntısı yaşanabiliyor. Sunucu üzerinde gerekli bakımlar vs yapılmadığı durumlarda log dosyaları büyük boyutlara ulaşabiliyor.

Linux işletim sistemi üzerinde log dosyaları /var/log altında bulunur. Bu log dosyalarını tamamen silmek işletim sistemine zarar verir. Sisteme zarar vermemek için bu dosyaların içlerini boşaltmak gerekir. Örneğin mail gönderme loglarını temizleyecekseniz "rm -rf /var/log/maillog" komutunu çalıştırmak sisteme zarar verecektir. Bu durumda maillog dosyası silinir ve bir daha buraya log yazamayacağı için sistem sorun çıkartır. Bu log dosyasının içini ":> /var/log/maillog" bu şekilde temizleyebiliriz. Ancak /var/log dizini altında bir çok dosya ve dizin bulunmakta, tek tek hepsini temizlemek de zaman alabilir. Log dosyalarının temizleme işlemini aşağıdaki komutlar ile daha hızlı bir şekilde halledebilirsiniz. Bu komutlar "sh" uzantısı ile kaydetmeniz gerekmektedir.

#!/bin/bash
# Muhammed Niyazi ALPAY
# https://niyazi.org
find /var/log/ -type f > logfiles.txt
while read line
do
    NAME=`echo "$line" | cut -d'.' -f1`
    EXTENSION=`echo "$line" | cut -d'.' -f2`
    rm -rf $NAME.gz
    :> "$line";
done < logfiles.txt
rm -rf logfiles.txt
rm -rf /var/log/*-2*
rm -rf /var/log/*.2*
echo "Log files have been cleared"

Bu komutları logclear.sh olarak kaydettikten sonra çalıştırırsanız /var/log içerisindeki ve alt dizinlerindeki tüm log dosyaları temizlenecektir.

Bunları da okumak isteyebilirsiniz

2 yorum

  • Tarık
    Tarık
    20 Eyl 2024 00:31

    Bu Türçe'deki betik neden yarım, ayrıca while read line dediğini line nedir?

  •  Cryptograph
    Cryptograph
    25 Eyl 2024 19:23

    Siteyi yeni halinde temize çekerken eksiklik olmuş düzelttim kodu, ingilizce haliyle aynı şu anda.

    Türkçe içerikte betik eksik gözüktüğü için döngü sonundaki done komutu sonrası yoktu. Şu anki düzeltilmiş haliyle tarif edeyim:

    while read line ifadesinde, line değişkeni, giriş dosyası logfiles.txt'den okunan her satırın içeriğini depolar. read komutu, standart girdiden bir satır okur ve bunu belirtilen değişkene atar yani buradaki line isimli değişkene atanır.

Siz de yorum bırakın

E-posta adresiniz yayınlanmayacaktır. Zorunlu alanlar * ile işaretlenmiştir