Sul forum italiano di Ubuntu, si sta sviluppando un interessante script per la pulizia del nostro sistema. Il progetto iniziato nell’estate del 2008 è sempre più completo ed in costante miglioramento. Per avere lo script vi rimando ovviamente al post originale. In questo blog cercheremo di mantenere sempre questa guida aggiornata all’ultimo script disponibile seguendo tutti gli sviluppi del progetto.

Codice:
#!/bin/bash
#Questo script effettua la manutenzione di un sistema operativo GNU/Linux Ubuntu 8.04 - 8.10

#------------------------------------------------------------------------------------------+
# Funzione aggiornamento                                                                   |
#------------------------------------------------------------------------------------------+
function aggiornamento {
echo
echo "********************** INIZIO AGGIORNAMENTO DEL SISTEMA **********************"
echo
echo -n "# Aggiorno gli indici dei pacchetti? "
read sure
if [[ $sure = "s" ]]
	then
		sudo apt-get update
		echo "* Aggiornamento indici pacchetti...[OK]"
	else
		echo "* Aggiornamento indici pacchetti...[NOT EXECUTED]"
fi
echo
echo -n "# Aggiorno le chiavi GPG degli indici dei pacchetti? "
read sure
if [[ $sure = "s" ]]
	then
		touch err
		sudo apt-get update 2>err
 		num=$(grep 'NO_PUBKEY' err | wc -l)
		str=$(grep 'NO_PUBKEY'  err)
		tot=$num
		if [ $num != 0 ]
			then
			echo "---RISOLVO NO_PUBKEY---"
			for (( i=0 ; i<$num ; i++ ))
				do
				tmp=${str#*NO_PUBKEY }
				key=${tmp:0:16}
				str=${str#*NO_PUBKEY}
				echo "Aggiungo la chiave:$key"
				gpg --keyserver subkeys.pgp.net --recv $key
				gpg --export --armor $key | sudo apt-key add -
				done
		fi
	num=0
	num=$(grep 'BADSIG' err | wc -l)
	str=$(grep 'BADSIG'  err)
	tot=$(( $tot + $num ))
	if [ $num != 0 ]
		then
			echo "---RISOLVO BADSIG---"
			for (( i=0 ; i<$num ; i++ ))
				do
				tmp=${str#*BADSIG }
				key=${tmp:0:16}
				str=${str#*BADSIG}
				echo "Aggiungo la chiave:$key"
				gpg --keyserver subkeys.pgp.net --recv $key
				gpg --export --armor $key | sudo apt-key add -
				done
	fi
	rm err
	else
		echo "* Aggiornamento chiavi GPG degli indici dei pacchetti...[NOT EXECUTED]"
fi
echo
echo -n "# Aggiorno i pacchetti? "
read sure
if [[ $sure = "s" ]]
	then
		sudo apt-get upgrade
		echo "* Aggiornamento pacchetti...[OK]"
	else
		echo "* Aggiornamento pacchetti...[NOT EXECUTED]"
fi
echo
echo -n "# Aggiorno la data e l'ora del sistema? "
read sure
if [[ $sure = "s" ]]
	then
		sudo ntpdate it.pool.ntp.org
		echo "* Aggiornamento data e ora...[OK]"
	else
		echo "* Aggiornamento data e ora...[NOT EXECUTED]"
fi
echo -n "# Aggiorno il kernel del sistema? "
read sure
if [[ $sure = "s" ]]
	then
		sudo apt-get dist-upgrade -f
		echo "* Aggiornamento kernel...[OK]"
	else
		echo "* Aggiornamento kernel...[NOT EXECUTED]"
fi
echo
echo -n "# Aggiorno l'immagine initramfs del kernel? "
read sure
if [[ $sure = "s" ]]
	then
		sudo update-initramfs -u
		echo "* Aggiornamento immagine initramfs...[OK]"
	else
		echo "* Aggiornamento immagine initramfs...[NOT EXECUTED]"
fi
echo
echo -n "# Verifico che non ci siano pacchetti difettosi? "
read sure
if [[ $sure = "s" ]]
	then
		sudo apt-get install -f
		echo "* Verifica pacchetti difettosi...[OK]"
	else
		echo "* Verifica pacchetti difettosi...[NOT EXECUTED]"
fi
echo
echo "ATTENZIONE: COMANDO POTENZIALMENTE PERICOLOSO!!"
echo -n "# Aggiorno le configurazioni di GRUB? "
read sure
if [[ $sure = "s" ]]
	then
		sudo cp /boot/grub/menu.lst /boot/grub/menu.bak
		sudo update-grub
		echo "* Backup /boot/grub/menu.lst...[OK]"
		echo "* Aggiornamento GRUB...[OK]"
	else
		echo "* Aggiornamento GRUB...[NOT EXECUTED]"
fi
echo
echo "--------------------------- AGGIORNAMENTO TERMINATO --------------------------"
echo
}

#------------------------------------------------------------------------------------------+
# Funzione pulizia                                                                         |
#------------------------------------------------------------------------------------------+
function pulizia {
echo
echo "************************* INIZIO PULIZIA DEL SISTEMA *************************"
echo
echo -n "# Rimuovo le dipendenze inutili? "
read sure
if [[ $sure = "s" ]]
	then
		sudo apt-get --purge autoremove
		echo "* Rimozione dipendenze inutili...[OK]"
	else
		echo "* Rimozione dipendenze inutili...[NOT EXECUTED]"
fi
echo
echo -n "# Rimuovo la cache dei pacchetti scaricati dai repository obsoleti? "
read sure
if [[ $sure = "s" ]]
	then
		sudo apt-get autoclean
		echo "* Rimozione cache pacchetti obsoleti...[OK]"
	else
		echo "* Rimozione cache pacchetti obsoleti...[NOT EXECUTED]"
fi
echo
echo -n "# Rimuovo la cache dei pacchetti scaricati dai repository? "
read sure
if [[ $sure = "s" ]]
	then
		sudo apt-get clean
		echo "* Rimozione  cache pacchetti scaricati...[OK]"
	else
		echo "* Rimozione  cache pacchetti scaricati...[NOT EXECUTED]"
fi
echo
echo -n "# Rimuovo tutti i pacchetti di sistema oramai diventati obsoleti? "
read sure
if [[ $sure = "s" ]]
	then
		sudo dpkg --purge `COLUMNS=300 dpkg -l "*" | egrep "^rc" | cut -d\  -f3`
		echo "* Rimozione pacchetti obsoleti...[OK]"
	else
		echo "* Rimozione pacchetti obsoleti...[NOT EXECUTED]"
fi
echo
echo -n "# Elimino il contenuto di /temp? "
read sure
if [[ $sure = "s" ]]
	then
		sudo rm -rf /tmp/*
		echo "* Eliminazione contenuto /temp...[OK]"
	else
		echo "* Eliminazione contenuto /temp...[NOT EXECUTED]"
fi
echo
echo -n "# Elimino il contenuto della directory /.thumbnails? "
read sure
if [[ $sure = "s" ]]
	then
		sudo rm -rfv ~/.thumbnails/*
		echo "* Eliminazione files da /.thumbnails ...[OK]"
	else
		echo "*Eliminazione files da /.thumbnails ...[NOT EXECUTED]"
fi
echo
echo -n "# Effettuo una ricerca dei residui di files? "
read sure
if [[ $sure = "s" ]]
	then
	find $HOME -name "*~"
	find $HOME -name "Desktop.ini"
	find $HOME -name "Thumbs.db"
	echo -n "# Rimuovo questi residui di file? "
	read sure
	if [ $sure == "s" ]
		then
		find $HOME -name "*~" -print0|xargs -0 /bin/rm -f
		find $HOME -name "Desktop.ini" -print0|xargs -0 /bin/rm -f
		find $HOME -name "Thumbs.db" -print0|xargs -0 /bin/rm -f
		echo "* Eliminazione residui...[OK]"
	else echo "* Eliminazione residui...[NOT EXECUTED]"
	fi
else echo "* Ricerca residui di files...[NOT EXECUTED]"
fi
echo
echo -n "# Elimino il contenuto del Cestino? "
read sure
if [[ $sure = "s" ]]
	then
		sudo rm -rfv ~/.local/share/Trash/*
		echo "* Eliminazione files da /Trash ...[OK]"
	else
		echo "* Eliminazione files da /Trash ...[NOT EXECUTED]"
fi
echo
echo -n "# Pulisco i documenti recenti? "
read sure
if [[ $sure = "s" ]]
	then
		sudo mv ~/.recently-used.xbel .recently-used.xbel.bak
		sudo mv ~/.recently-used .recently-used.bak
		touch ~/.recently-used.xbel
		echo "<?xml version="1.0" encoding="UTF-8"?>\n<xbel version="1.0"\nxmlns:bookmark="http://www.freedesktop.org/standards/desktop-bookmarks"\nxmlns:mime="http://www.freedesktop.org/standards/shared-mime-info"\n></xbel>\n
 " > ~/.recently-used.xbel
		echo "* Pulizia documenti recenti...[OK]"
	else
		echo "* Pulizia documenti recenti...[NOT EXECUTED]"
fi
echo
echo
echo "Per l'esecuzione di questo comando verrà installato il pacchetto deborphan"
echo "ATTENZIONE: COMANDO POTENZIALMENTE PERICOLOSO!!"
echo -n "# Rimuovo le librerie orfane? "
read sure
if [[ $sure = "s" ]]
	then
		sudo apt-get -y install deborphan
		sudo apt-get --purge remove `deborphan`
		echo "* Rimozione librerie orfane...[OK]"
	else
		echo "* Rimozione librerie orfane...[NOT EXECUTED]"
fi
echo
echo "Per l'esecuzione di questo comando verrà installato il pacchetto deborphan"
echo "ATTENZIONE: COMANDO POTENZIALMENTE PERICOLOSO!!"
echo -n "# Rimuovo le librerie orfane di sviluppo? "
read sure
if [[ $sure = "s" ]]
	then
		sudo apt-get -y install deborphan
		sudo apt-get --purge remove `deborphan --libdev`
		echo "* Rimozione librerie orfane...[OK]"
	else
		echo "* Rimozione librerie orfane...[NOT EXECUTED]"
fi
echo
echo "------------------------------ PULIZIA TERMINATA -----------------------------"
echo
}

#------------------------------------------------------------------------------------------+
# Programma principale                                                                     |
#------------------------------------------------------------------------------------------+
echo "+============================================================================+"
echo "|                           MANUTENZIONE DI UBUNTU                           |"
echo "|                                                                            |"
echo "|        Questo script effettua una manutenzione guidata del sistema         |"
echo "|        per rispondere affermativamente alle domande che verranno           |"
echo "|        poste premete s e confermate premendo il tasto <invio>              |"
echo "|        per saltare la domanda premete <invio>                              |"
echo "|                                                                            |"
echo "+============================================================================+"
echo
echo -n "~~~ ESEGUIRE I COMANDI PER L'AGGIORNAMENTO DEL SISTEMA? "
read sure
if [[ $sure = "s" ]]
	then
		aggiornamento
	else
		echo "*** Aggiornamento del sistema...[NOT EXECUTED]"
fi
echo
echo -n "~~~ ESEGUIRE I COMANDI PER LA PULIZIA DEL SISTEMA? "
read sure
if [[ $sure = "s" ]]
	then
		pulizia
	else
		echo "*** Pulizia del sistema...[NOT EXECUTED]"
fi
echo
echo -n "~~~ E' CONSIGLIABILE RIAVVIARE IL SISTEMA. RIAVVIARE? "
read sure
if [[ $sure = "s" ]]
	then
		sudo reboot
	else
		echo "*** Riavvio del sistema...[NOT EXECUTED]"
fi
echo
read -p "Premi <INVIO> per uscire"

Per far funzionare lo script dovete semplicemente copiare il codice qua sopra in un nuovo file e salvarlo sulla nostra home con estensione .sh. Fatto questo clicchiamo con il tasto destro sul nuovo file, andiamo in Proprietà->Permessi e mettiamo la spunta sull’opzione “Consentire l’esecuzione del file come programma“. Adesso non ci rimane altro che aprire il terminale e dare il seguente comando:

./nomefile.sh

Per avere un’idea di cosa fanno i vari comandi dello script vi rimando alla nostra guida precedente “Pulire Ubuntu“.

Questo script è abbastanza completo e sicuramente sarà un buon alleato del nuovo strumento di pulizia Computer Janitor. Per pulire ancora più in profondità il nostro sistema, con uno sguardo rivolto soprattutto ai file legati alla nostra privacy, vi consiglio BleachBit, un ottimo privacy cleaner per sistemi Linux.