Cleanup Logs Linux
Cleanup Logs Linux

Cara Autocleanup Logs Linux Menggunakan Bash Script

Bayangkan file log Linux seperti sampah yang terus menumpuk di server kamu.

Jika tidak pernah dibersihkan, suatu hari ‘sampah’ ini akan memenuhi seluruh ruang disk dan menghentikan operasional.

Solusi elegannya? Sebuah script otomatis. Cara cleanup logs linux menggunakan bash script, untuk menjaga server kamu tetap bersih dan efisien.

Bash Script Cleanup Logs

Masuk sebagai super user/ root.

sudo su –

Buat direktori dengan nama clean-logs .

mkdir /clean-logs

Buat file bash script contoh disini autocleanup.sh.

nano /clean-logs/autocleanup.sh

Masukan script dibawah kedalam file autocleanup.sh yang sebelumnya sudah dibuat.

#!/bin/bash
# Comprehensive Auto-Cleanup Logs Script with Dynamic Confirmation

# Function to print section headers
print_header() {
echo “—————————————-“
echo “$1”
echo “—————————————-“
}

# Prompt user for confirmation (skipped if AUTO_CLEAN=1)
confirm_deletion() {
if [[ “$AUTO_CLEAN” == “1” ]]; then
echo “Auto-clean mode enabled. Skipping confirmation.”
return
fi

read -p “Are you sure you want to delete the files? (y/N): ” confirm
if [[ “$confirm” != “y” && “$confirm” != “Y” ]]; then
echo “Cleanup aborted.”
exit 0
fi
}

# Clean journal logs
print_header “Cleaning Journal Logs”
sudo journalctl –vacuum-size=500M
echo “Journal logs cleaned up.”

# Clean SQL, gzip, zip, and log files in specific directories
LOG_DIRS=(“/var/log” “/home” “/tmp”)
print_header “Cleaning SQL, Gzip, and Log Files in Target Directories”
for dir in “${LOG_DIRS[@]}”; do
if [ -d “$dir” ]; then
echo “Scanning directory: $dir”
sudo find “$dir” -type f \( -name “*.sql” -o -name “*.gz”  -o -name “*.log” -o -name “*.log.*” \) -exec rm -v {} \;
else
echo “Directory $dir does not exist, skipping.”
fi
done
echo “SQL, Gzip, Zip, and Log files cleaned up.”

# Clean trash and staging folders
print_header “Cleaning Trash and Staging Folders”
TRASH_DIRS=(“/home/*/.local/share/Trash” “/var/www/*/staging”)
for trash_dir in “${TRASH_DIRS[@]}”; do
echo “Scanning directory: $trash_dir”
sudo find $trash_dir -type f -exec rm -v {} \; 2>/dev/null
done
echo “Trash and staging folders cleaned up.”

# Summary of disk usage after cleanup
print_header “Disk Usage Summary After Cleanup”
df -h

print_header “Auto-Cleanup Completed”

Catatan : Sebelum menjalankan Script Cleanup Logs backup terlebih dahulu file config, source code, file dump database, dll.

Tambahkan permision Execute pada file autocleanup.sh .

chmod +x /clean-logs/autocleanup.sh

Untuk menjalankan file bash script autocleanup.sh .

bash /clean-logs/autocleanup.sh

Hasil setelah menjalankan script autocleanup

Sebelum Cleanup Log
Sebelum Cleanup Log
Sesudah Cleanup Log
Sesudah Cleanup Log

Menjalankan Script Autocleanup dengan Cronjob

Sebuah bash script untuk cleanup logs Linux memang powerful, namun akan kehilangan tujuan utamanya jika kita masih harus menjalankannya secara manual.

Di sinilah Cron masuk sebagai pahlawan. Website untuk generate crontab script https://crontab.guru/ .

Cron scheduler yang berjalan di latar belakang sistem Linux dan memungkinkan kita untuk mengeksekusi script secara otomatis pada waktu, hari, atau interval yang telah ditentukan.

Kombinasi antara bash script dan cron inilah yang akan menciptakan sistem autocleanup yang sesungguhnya.

Konfigurasi Cron

Jalankan perintah dibawah untuk menjalankan cronjob.

crontab -e

Memilih Text Editor Membuka Konfigurasi Crontab
Memilih Text Editor Membuka Konfigurasi Crontab
File Konfigurasi Crontab
File Konfigurasi Crontab

Untuk isi dari file configuration crontab, bisa pilih salah satu cron dibawah.

Cron Berjalan setiap hari, tengah malam

0 0 * * * sh /clean-logs/autocleanup.sh

Keterangan :

  • Pertama 0 = Menit ke-0
  • Kedua 0 = Jam ke-0 (pukul 00:00 atau tengah malam)
  • Ketiga * = Setiap hari dalam bulan (tanggal 1-31)
  • Keempat * = Setiap bulan (Januari-Desember)
  • Kelima * = Setiap hari dalam minggu (Senin-Minggu)

Script autocleanup.sh akan berjalan otomatis setiap hari tepat pada tengah malam untuk membersihkan log di sistem Linux.

Cron Berjalan tengah malam, setiap hari minggu

0 0 * * 0 sh /clean-logs/autocleanup.sh

Keterangan :

  • Pertama 0 = Menit ke-0
  • Kedua 0 = Jam ke-0 (pukul 00:00 atau tengah malam)
  • Ketiga * = Setiap hari dalam bulan (tanggal 1-31)
  • Keempat * = Setiap bulan (Januari-Desember)
  • Kelima 0 = Setiap minggu

Script autocleanup.sh akan dijalankan setiap hari Minggu tepat pada pukul 00:00 (tengah malam).