Skip to content

Instantly share code, notes, and snippets.

@anibalardid
Created September 7, 2022 12:13
Show Gist options
  • Save anibalardid/7259148b2186c5f0e7aaaf1b045bf64b to your computer and use it in GitHub Desktop.
Save anibalardid/7259148b2186c5f0e7aaaf1b045bf64b to your computer and use it in GitHub Desktop.

remove_old_kernels.sh

#!/bin/bash
# Run this script without any param for a dry run
# Run the script with root and with exec param for removing old kernels after checking
# the list printed in the dry run

uname -a
IN_USE=$(uname -a | awk '{ print $3 }')
echo "Your in use kernel is $IN_USE"

OLD_KERNELS=$(
    dpkg --list |
        grep -v "$IN_USE" |
        grep -Ei 'linux-image|linux-headers|linux-modules' |
        awk '{ print $2 }'
)
echo "Old Kernels to be removed:"
echo "$OLD_KERNELS"

if [ "$1" == "exec" ]; then
    for PACKAGE in $OLD_KERNELS; do
        yes | apt purge "$PACKAGE"
    done
fi

Run it like this for a dry run:
remove_old_kernels.sh

If all looks good, run it again like this:
sudo remove_old_kernels.sh exec

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