System Maintenance
Regular maintenance keeps Debian-based systems healthy and secure.
Regular Maintenance Checklist
Unused Package Removal
Autoremove
# Remove unused dependencies
sudo apt autoremove
# With purge (removes configs too)
sudo apt autoremove --purge
Configuration File Management
System Health Checks
Check for Issues
# Failed systemd services
systemctl --failed
# Recent errors in journal
journalctl -p err -b
# Errors since last boot
journalctl -p 3 -xb
# Disk space
df -h
Verify Installed Packages
# Install debsums
sudo apt install debsums
# Check all packages
sudo debsums -s
# Check specific package
debsums package
# Check configs only
debsums -e
Journal Maintenance
Automatic Updates
Unattended Upgrades
# Install
sudo apt install unattended-upgrades
# Configure
sudo dpkg-reconfigure unattended-upgrades
# Test
sudo unattended-upgrade --dry-run --debug
Configuration
Edit /etc/apt/apt.conf.d/50unattended-upgrades:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";
Enable automatic updates in /etc/apt/apt.conf.d/20auto-upgrades:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
Release Upgrades
Ubuntu LTS to LTS
# Update current system
sudo apt update && sudo apt full-upgrade
# Install upgrade tool
sudo apt install update-manager-core
# Check for new release
do-release-upgrade -c
# Upgrade
sudo do-release-upgrade
Debian Stable Upgrade
# Backup sources.list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
# Update codename (e.g., bullseye → bookworm)
sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
# Update and upgrade
sudo apt update
sudo apt full-upgrade
# Reboot
sudo reboot
# Clean up
sudo apt autoremove
Automation Script
Create a maintenance script at ~/bin/debian-maintenance:
#!/bin/bash
set -e
echo "=== Debian/Ubuntu Maintenance ==="
echo -e "\n[1/6] Updating package lists..."
sudo apt update
echo -e "\n[2/6] Upgrading packages..."
sudo apt upgrade -y
echo -e "\n[3/6] Removing unused packages..."
sudo apt autoremove -y
echo -e "\n[4/6] Cleaning package cache..."
sudo apt clean
echo -e "\n[5/6] Checking failed services..."
systemctl --failed
echo -e "\n[6/6] Cleaning journal..."
sudo journalctl --vacuum-time=2weeks
echo -e "\n=== Maintenance Complete ==="
df -h /
Make executable:
chmod +x ~/bin/debian-maintenance