63 lines
1.7 KiB
Bash
Executable File
63 lines
1.7 KiB
Bash
Executable File
#!/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."
|
|
|