Linux System Maintenance

Keep your Linux server healthy with regular maintenance tasks every sysadmin should know.

Category: Server

System Updates

# Update package lists and upgrade all packages
sudo apt update && sudo apt upgrade -y

# Remove unused packages
sudo apt autoremove -y && sudo apt autoclean

# Check if a reboot is needed
cat /var/run/reboot-required 2>/dev/null && echo "Reboot required" || echo "No reboot needed"

Disk Usage

# Overall disk usage
df -h

# Find the largest directories
du -sh /* 2>/dev/null | sort -rh | head -20

# Find large files
find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null

# Clean up old logs
sudo journalctl --vacuum-time=30d
sudo journalctl --vacuum-size=500M

Check System Health

# CPU and memory overview
top
htop  # if installed

# Memory usage
free -h

# Load average (1m, 5m, 15m)
uptime

# Check for failed services
systemctl --failed

Review Logs

# System log (last 100 lines)
journalctl -n 100 -p warning

# Authentication failures
grep "Failed password" /var/log/auth.log | tail -20

# Kernel messages
dmesg | tail -30

User and Session Management

# List logged-in users
who

# List all user accounts
cut -d: -f1 /etc/passwd

# Last login history
last -20

# Lock an unused account
sudo passwd -l username

Schedule Maintenance with Cron

sudo crontab -e
# Daily update at 3 AM
0 3 * * * apt update && apt upgrade -y >> /var/log/autoupdate.log 2>&1
# Weekly disk cleanup
0 4 * * 0 apt autoremove -y && journalctl --vacuum-time=30d