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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir