Kişisel bilgisayarımda logların birikmesinden yana pek bir sıkıntım olmadı. Şimdiye kadar log dolduğu için çalışmamazlık da etmedi. Yine de masaüstünde çöp kutusunun dolu görünmesi gibi bir dürtü arada olmuyor da değildi.
Neden bir servis oluşturup tüm logların rotate edilmiş hallerini silmeyeyim ki diye düşündüm.
ChatGPT + azcık Linux bilgimle aşağıdaki sonuç ortaya çıktı.
Temizlik Betiğini Oluşturma
Önce bir betik dosyası oluşturuyoruz.
sudo nano /etc/local/bin/logcleaup.sh
Sonra içine istediğimiz kodları ekliyoruz.
Şahsen ben 3 günden eski logları vakum ile temizlemeyi tercih ettim. Varsa rotate ile dönüştürülmüş sıkıştırılmış dosyaları da arayıp bulup silsin istedim.
#!/bin/bash find /var/log -name "*.gz" -type f -exec rm {} \; journalctl --vacuum-time=3days
Dosyamızı kaydediyoruz ve sonrasında çalıştırma yetkisi veriyoruz.
sudo chmod +x /usr/local/bin/logcleanup.sh
Bu aşamada elimizde sadece betik var. Şimdi bunu bir systemd servisine dönüştürelim.
Temizlik Servisini Oluşturma
Servis için gereken dosyayı oluşturuyoruz
sudo nano /etc/systemd/system/logcleanup.service
İçine betiğimizle ilgili tanımlamaları ekliyoruz. Burada servisimiz bilgisayar her başlatıldığında yeniden çalıştırılacak. Sonuçta kişisel bilgisayarım olduğu için günde en az bir defa kapatıp açıyorum.
[Unit] Description=Log cleanup service [Service] Type=simple ExecStart=/usr/local/bin/logcleanup.sh [Install] WantedBy=default.target
Sonrasında artalan hizmetini yeniden yükleyip servisi etkinleştiriyoruz.
sudo systemctl daemon-reload sudo systemctl enable logcleanup.service
Aşağıdaki gibi bir mesaj görünecektir.
Created symlink /etc/systemd/system/default.target.wants/logcleanup.service → /etc/systemd/system/logcleanup.service.
Artık servisi başlatabiliriz.
sudo systemctl start logcleanup.service
Servisin çalışma durumunu merak ediyorsanız aşağıdaki komut işinizi görecektir
sudo systemctl status logcleanup.service
Servisi Yönetmek
Servisi yeniden başlatmak mümkün.
sudo systemctl restart logcleanup.service
Servisi devre dışı bırakmak istersek o da kolay iş
sudo systemctl disable logcleanup.service
Servisten memnun kalmazsak silip atmak da mümkün.
sudo rm /etc/systemd/system/logcleanup.service sudo systemctl daemon-reload
Betik dosyası da boşa durmasın. Silelim gitsin.
sudo rm /usr/local/bin/logcleanup.sh
Neredeyse SEO makale gibi oldu. Şuraya yanarlı-dönerli bir uçbirim resmi de koyup İngilizceye çevirsek mis gibi olur.
Alternatif yöntem olarak loglama ayarlarını düzenlemek mümkün gibi.
sudo journalctl --vacuum-time=2d sudo journalctl --vacuum-size=100M sudo journalctl --vacuum-files=5 sudo nano /etc/systemd/journald.conf #SystemMaxUse=100M olarak ayarla sudo systemctl restart systemd-journald sudo journalctl --disk-usage
Bu yöntemde, dönüştürülmüş veya farklı şekillerde arşivlenmiş eski logları tutuyor mu, siliyor mu test etmedim.