Καθαρισμός ubuntu-based συστήματος

Καλημέρα! :slight_smile:

Έχω γράψει ένα script-άκι για τον καθαρισμό λειτουργικών συστημάτων βασισμένων στο Ubuntu.

Οι εντολές έχουν επιλεχθεί μετά από έρευνα στο διαδίκτυο, οπότε είναι πολύ πιθανό κάποιες να μην είναι πραγματικά αποτελεσματικές ή και “επικίνδυνες”. :woozy_face:

Προσωπικά, το χρησιμοποιώ σε Linux Mint εδώ και 1 χρόνο (και κάτι) χωρίς προβλήματα.

Παραθέτω εδώ το link για όποιον θα ήθελε να το κατεβάσει, αλλά και τον κώδικα για όποιον θα ήθελε να ρίξει μια ματιά και να βοηθήσει στην βελτίωσή του. :blush:

:arrow_right: https://github.com/koulaxizis/ufit

#!/bin/bash

# Downloaded from https://github.com/koulaxizis/ufit ~ Absolutely no warranty provided. I'm not responsible in any way for any possible damage may occur on your system. Use it at your own responsibility. ;)

echo -e "\033[1muFit: Dead-simple script to clean up Ubuntu-based distros.\033[0m"
echo ".:: Downloaded from https://github.com/koulaxizis/ufit ::."
echo ""
echo "What it does...
 - Updates all DEB, SNAP and FLATPAK applications.
 - Fixes any missing dependencies or broken packages.
 - Shrinks systemd's journal to a maximum of 100 MB.
 - Uses preload to speed up application load time.
 - Removes dependencies that are no longer required.
 - Removes orphaned packages and orphaned libraries.
 - Removes old kernels that are no longer required.
 - Removes all packages kept in the apt cache.
 - Removes all data kept in the thumbnail cache.
 - Removes all unused flatpak runtimes.
 - Removes old versions on installed snaps [*].
 - Removes trashed files older than 30 days.
 - Removes extra localization of installled packages."
echo ""
echo "[*] If snapd isn't installed, the script will end unexpectedly. However, commands about Snap are at the very end, so all of the rest commands will have been executed successfully. Not sure (yet) how to fix that. Feel free to help if you know how. Alternatively, edit the script with your favorite text editor and remove 'sudo snap refresh' & 'sudo snap set system refresh.retain=2', save and run it!"
echo ""
echo "$(tput setaf 1)$(tput setab 7)Warning:Absolutely no warranty provided. I'm not responsible in any way for any possible damage may occur on your system. Use it at your own responsibility. Do you want to continue? $(tput sgr 0)"
echo ""
select yn in "Yes" "No"; do
    case $yn in
        Yes ) break;;
        No ) exit;;
    esac
done

sudo apt update --fix-missing
sudo apt install -f
sudo apt install trash-cli
trash-empty 30
sudo apt install localepurge
sudo apt install deborphan
deborphan --guess-all
sudo deborphan --guess-data | xargs sudo aptitude -y purge
sudo deborphan | xargs sudo apt-get -y remove --purge
sudo journalctl --vacuum-size=100M
sudo apt install preload
sudo apt upgrade -y
sudo flatpak update -y
sudo apt autoremove --purge -y
sudo apt clean
sudo apt autoclean
rm -rf ~/.cache/thumbnails/*
sudo flatpak uninstall --unused -y
sudo snap refresh
sudo snap set system refresh.retain=2
xmessage "All done! Enjoy your Linux system! :D"
6 «Μου αρέσει»

χρήσιμο φαίνεται, ευχαριστώ/ούμε!
(δεν γνωρίζω τη γλώσσα), γιατί επιλέγεις σύνδεση όλων των εντολών αντί σε ξεχωριστές γραμμές?

χα! κλείσιμο λούπας με αναγραμματισμό της αρχικής εντολής? :P #fun

(νόμιζα apt & apt-get ήταν ταυτόσημες /σκέφτομαι δυνατά)

1 «Μου αρέσει»

Bash είναι, απλά με κάποιες ίσως λίγο πιο ασυνήθιστες παραμέτρους, όπως η επιλογή “Yes/No” και οι χρωματικοί κώδικες, κατά τ’ άλλα είναι κλασικές εντολές σε bash. :slight_smile:

Με μια μικρή “ψαχτική”, φαίνεται πως το apt τείνει να αντικαταστήσει το apt-get, οπότε θα σουλουπώσω το script με βάση αυτή τη νέα γνώση. :smiley:

Επίσης, υλοποιήθηκε με “σύνδεση” εντολών γιατί… έτσι μου βγήκε πριν ένα/ενάμιση χρόνο που το πρωτοψαχούλεψα! Είναι πολύ πιο φιλικό στο μάτι με τον τρόπο που προτείνεις, οπότε θα το αλλάξω.

Το feedback σου ήταν τέλειο, σ’ ευχαριστώ πολύ!! :heart_eyes:

Γνωρίζει κάποιος πως μπορώ να ορίσω μια πολύ συγκεκριμένη παράμετρο πριν την εκτέλεση μιας εντολής; Συγκεκριμένα, θέλω να ελέγχει αν είναι το snapd εγκατεστημένο και, αν δεν είναι, να παρακάμπτει τις εντολές που ακολουθούν - ή αν είναι, να τις εκτελεί. Δεν μπόρεσα να βρω άκρη πως να το κάνω…

1 «Μου αρέσει»

Έκανα ένα φρεσκάρισμα στο script και του έφτιαξα και μια σελιδούλα. :slight_smile:

:arrow_right: https://koulaxizis.github.io/ufit/

2 «Μου αρέσει»

Μου φάνηκε πολύ καλό! Εύγε!
(μου πήρε 2 μέρες να βρω πώς το κατεβάζω το αρχείο από το github, πώς το τρέχω σαν πρόγραμμα και πώς το τρέχω στο τερματικό, αλλά χαλάλι)

2 «Μου αρέσει»

Χαίρομαι πολύ που το βρήκες χρήσιμο! :heart:

Καλησπέρα

Έτρεξα το σκριπτάκι σου και είδα ότι έχει βγάλει ένα desklet που είχα για το Linux Mint.

Χρησιμοποιούσα το Simple system monitor και δεν μπορώ να το ξανάεμφανίσω. Μικρή ζημιά. Έχεις καμιά ιδέα πώς να το ενεργοποιήσω πάλι;
Έχω κάνει remove + install και από το manage αλλά τίποτε.

Καλησπέρα! Με συγχωρείς για την αργοπορημένη απάντηση…

Κανονικά, το script δεν επηρεάζει κατά οποιοδήποτε τρόπο τα desklets.

Κατάφερες να το εμφανίσεις ξανά ακολουθώντας τα βήματα που έκανες την πρώτη φορά που το εγκατέστησες ή δεν πέτυχε;

Συγνώμη για την καθυστερημένη απάντηση

Πάτησε AltF2 γραψε lg και πάτησε enter, εκει μπορείς να δεις τι ακριβώς συμβαίνει

Δεν πειράζει ήταν μικρή η ζημιά. Δεν τα κατάφερα ποτέ και επειδή βγήκε η νεα έκδοση του Mint έκανα από την αρχή νέα εγκατάσταση.

Φοβάμαι να το τρέξω τώρα. Μου έβγαζε και μήνυμα notification για πακέτα που λείπουν κάθε φορά που έκανα reboot. Σαν αρχάριος τρόμαξα λίγο.

Προτιμότερα apt-get για scripting, δες http://manpages.ubuntu.com/manpages/focal/man8/apt.8.html#script%20usage%20and%20differences%20from%20other%20apt%20tools
Αν και δεν νομίζω να υπάρχει θέμα με το apt τώρα κι αυτό μάλλον περίσσεψε από τις αρχές

Συγκεκριμένα, θέλω να ελέγχει αν είναι το snapd εγκατεστημένο

Εφόσον έχεις κάνει autoremove --purge παραπάνω, βάλε τις εντολές που θες σε μια if

if dpkg-query -s snapd >/dev/null 2>&1; then
   echo "do command if snapd is installed"
fi

Και ένας γενικότερος τρόπος (όχι μόνο apt συστήματα) για το αν μια εντολή υπάρχει

if command -v snap >/dev/null 2>&1; then
  echo "do command if snap command exists"
fi

καλη δουλεια μεγαλε σε ευχαριστω