#!/bin/bash # System Cleanup Script # Run this script via cron to maintain system cleanliness # Set variables LOG_FILE="/var/log/system-cleanup.log" DATE=$(date '+%Y-%m-%d %H:%M:%S') # Function to log messages to both console and file log_message() { echo "[$DATE] $1" | tee -a "$LOG_FILE" } log_message "Starting system cleanup..." # Docker System Cleanup log_message "Cleaning up Docker system..." docker system prune -a -f --volumes | while read -r line; do log_message "Docker: $line" done # Clean up old Docker images not used in last 30 days log_message "Removing unused Docker images older than 30 days..." docker image prune -a -f --filter "until=720h" | while read -r line; do log_message "Docker images: $line" done # System Package Cleanup log_message "Cleaning up apt packages..." apt-get autoremove -y | while read -r line; do log_message "APT autoremove: $line" done apt-get autoclean -y | while read -r line; do log_message "APT autoclean: $line" done # Clean up old logs (keep last 7 days) log_message "Cleaning up old system logs..." find /var/log -name "*.log" -type f -mtime +7 -delete 2>/dev/null find /var/log -name "*.log.*" -type f -mtime +7 -delete 2>/dev/null # Clean up journal logs (keep last 7 days) log_message "Cleaning up journal logs..." journalctl --vacuum-time=7d | while read -r line; do log_message "Journal cleanup: $line" done # Clean up temporary files log_message "Cleaning up temporary files..." find /tmp -type f -atime +7 -delete 2>/dev/null find /var/tmp -type f -atime +7 -delete 2>/dev/null # Show disk usage after cleanup log_message "Disk usage after cleanup:" df -h | while read -r line; do log_message "Disk: $line" done log_message "System cleanup completed."