Skip to content

Instantly share code, notes, and snippets.

@jonathangreco
Created September 1, 2025 08:52
Show Gist options
  • Select an option

  • Save jonathangreco/ecd3b0bd98582d3b2add5f5e06c237d9 to your computer and use it in GitHub Desktop.

Select an option

Save jonathangreco/ecd3b0bd98582d3b2add5f5e06c237d9 to your computer and use it in GitHub Desktop.
Cleanup Ubuntu
#!/usr/bin/env bash
# Nettoyage système Ubuntu (APT, noyaux rc, journaux, Snaps, caches utilisateur)
# Usage: bash ~/clean-ubuntu.sh
# Option: --dry-run pour afficher sans supprimer (~/.cache)
set -o pipefail
DRY_RUN=0
[[ "$1" == "--dry-run" ]] && DRY_RUN=1
say() { printf "\n\033[1m▶ %s\033[0m\n" "$*"; }
# 0) Infos
say "Espace disque AVANT :"
df -h /
# 1) APT : caches & dépendances orphelines
say "Nettoyage APT (cache + autoremove)…"
sudo apt-get clean
sudo apt-get autoremove --purge -y || true
# 2) Purge des noyaux 'rc' (configs résiduelles seulement)
say "Purge des noyaux marqués 'rc'…"
pkgs=$(dpkg -l 'linux-*' | awk '/^rc/{print $2}')
if [[ -n "$pkgs" ]]; then
echo "$pkgs" | xargs -r sudo dpkg --purge
else
echo "Aucun noyau en 'rc' à purger."
fi
# 3) Journaux systemd : limiter à 100 Mo
if command -v journalctl >/dev/null 2>&1; then
say "Réduction des journaux (100 Mo)…"
sudo journalctl --vacuum-size=100M || true
fi
# 4) Snaps : supprimer révisions désactivées + vider cache snapd
if command -v snap >/dev/null 2>&1; then
say "Nettoyage des révisions Snap désactivées…"
# Conserver 2 révisions
sudo snap set system refresh.retain=2 || true
snap list --all | awk '$6=="disabled"{print $1, $3}' | while read -r name rev; do
[[ -n "$name" && -n "$rev" ]] || continue
echo "Suppression: $name révision $rev"
sudo snap remove "$name" --revision="$rev" || true
done
say "Vidage du cache snapd…"
sudo find /var/lib/snapd/cache -mindepth 1 -delete 2>/dev/null || true
fi
# 5) Caches utilisateur (~/.cache) + thumbnails
say "Taille de ~/.cache AVANT :"
du -sh "$HOME/.cache" 2>/dev/null || true
if [[ $DRY_RUN -eq 1 ]]; then
say "[Dry-run] Je n’efface pas ~/.cache (aperçu seulement)."
else
say "Vidage de ~/.cache (sécurisé, recréé par les apps)…"
rm -rf "$HOME/.cache/"* 2>/dev/null || true
rm -rf "$HOME/.cache/."* 2>/dev/null || true
# Thumbnails (souvent lourd)
rm -rf "$HOME/.cache/thumbnails" 2>/dev/null || true
fi
say "Taille de ~/.cache APRÈS :"
du -sh "$HOME/.cache" 2>/dev/null || true
# 6) Rapide coup d’œil sur /var/log et snaps
say "Taille /var/log :"
sudo du -sh /var/log 2>/dev/null || true
if [[ -d /var/lib/snapd/snaps ]]; then
say "Taille des snaps :"
sudo du -sh /var/lib/snapd/snaps 2>/dev/null || true
fi
# 7) Espace disque après
say "Espace disque APRÈS :"
df -h /
say "Nettoyage terminé ✅"
@jonathangreco
Copy link
Author

(crontab -l 2>/dev/null; echo "0 10 1 * * bash $HOME/clean-space-disk.sh >> $HOME/clean-space-disk.log 2>&1") | crontab -

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment