Strona główna Ubuntu C++ Hardware HTML i javascript Java Software SQL

Awk|bash - usuwanie starych obrazów jądra systemu Ubuntu.

Modyfikacja: 2018-05-25

Po aktualizacji jądra systemu Ubuntu pozostają w nim pakiety instalacyjne poszczególnych wersji. Pliki te są nie małe ponieważ mają kilkadziesiąt megabajtów, więc jeżeli aktualizacji było już kilka to ilość zajmowanego miejsca przez „niepotrzebne” pakiety jest spora.

Usunąć obrazy można korzystając z narzędzi okienkowych jak i również przy użyciu terminala (co z resztą polecam).

W celu ich usunięcia należy skorzystać z polecenia: sudo apt autoremove --purge. Użycie tego polecenia powoduje usunięcie starych jąder systemu, które nie są już potrzebne.

Skrypt poniżej usuwa tylko pakiety linux-headers, które zawierają nagłówki systemu Linux i są one też częścią jądra systemu:

  • uname -a - wyświetlenie aktualnej wersji jądra systemowego
  • dpkg -l | grep linux-headers-* - wyświetlenie wszystkich dostępnych lokalnie pakietów nagłówkowych,
  • sudo apt-get remove -y linux-headers-x-y-z linux-headers-x-y-z-generic - usunięcie konkretnego pakietu z systemu.
    sudo apt-get purge -y linux-headers-x-y-z linux-headers-x-y-z-generic
    - usunięcie konkretnego pakietu z systemu wraz z plikami konfiguracyjnymi.

Jeżeli napotkacie na jakiekolwiek problemy z usunięciem pakietów tutaj znajdziecie dokładny opis możliwości komendy apt-get ;)

Teraz trochę awk-a i szczypta bash-a przyprawimy to powyższymi komendami i otrzymamy skrypt, który robi porządek ze starymi wersjami pakietów ;) Zmodyfikowany skrypt do usuwania pakietów wraz z plikami konfiguracyjnymi.

Skrypt uruchamiasz na własną odpowiedzialność :)

Drukuj Zaznacz kod
#!/bin/bash

echo Skrypt usuwajacy stare wersje plikow linux-headers.

uname -r | awk '{
	print "Aktualna wersja jadra: "$0;
	print substr($0, 0, index($0, "-generic")) > "new_kernel.info";
}'

if [ -f remove_old_headers.bash ];
then
	rm remove_old_headers.bash;
fi

dpkg -l | grep linux-headers-* |awk 'BEGIN{
	if (getline < "new_kernel.info" > 0){
		ver = $0;
		print $0;
	} else {
		print "";
		print "**********************************";
		print "Plik z wersja jadra nie istnije!!!";
		print "**********************************";
		exit;
	}
}{
	if ((index($2, ver) == 0) && ("linux-headers-generic" != $2)){
		print "sudo apt-get purge -y "$2;
		print "sudo apt-get purge -y "$2 >> "remove_old_headers.bash";
	}

}'

if [ -f remove_old_headers.bash ];
then
	chmod u+x remove_old_headers.bash
	./remove_old_headers.bash
else 
        echo "The file was not generated because there are no old files with heders.";
fi