check_large_files.bash: now erases unused ct kernels and module directories

This commit is contained in:
Jed Reynolds
2021-01-04 22:57:39 -08:00
parent 7849a629c7
commit 939d1e6fae

View File

@@ -214,18 +214,23 @@ clean_old_kernels() {
echo "" echo ""
echo "" echo ""
note "Cleaning old CT kernels..." note "Cleaning old CT kernels..."
sleep 2
local f local f
if (( ${#removable_packages[@]} > 0 )); then
for f in "${removable_packages[@]}"; do for f in "${removable_packages[@]}"; do
echo "$f\*" echo "$f\*"
done | xargs /usr/bin/rpm -hve done | xargs /usr/bin/rpm -hve
fi
if (( ${#removable_kernels[@]} > 0 )); then
for f in "${removable_kernels[@]}"; do for f in "${removable_kernels[@]}"; do
echo "r m $f" echo "$f"
done done | xargs rm -f
fi
if (( ${#removable_libmod_dirs[@]} > 0 )); then
for f in "${removable_libmod_dirs[@]}"; do for f in "${removable_libmod_dirs[@]}"; do
echo "r m /lib/modules/$f" echo "/lib/modules/$f"
done done | xargs rm -rf
fi
echo "" echo ""
echo "" echo ""
} }
@@ -346,9 +351,12 @@ survey_kernel_files() {
removable_kernels=() removable_kernels=()
removable_libmod_dirs=() removable_libmod_dirs=()
removable_packages=() removable_packages=()
kernel_sort_names=() declare -A kernel_sort_names=()
declare -A kernel_sort_serial=()
declare -A pkg_sort_names=() declare -A pkg_sort_names=()
libmod_sort_names=() declare -A libmod_sort_names=()
local ser
local file
note "Surveying Kernel files" note "Surveying Kernel files"
mapfile -t kernel_files < <(find /boot -maxdepth 1 -type f -a \( \ mapfile -t kernel_files < <(find /boot -maxdepth 1 -type f -a \( \
-iname "System*" -o -iname "init*img" -o -iname "vm*" -o -iname "ct*" \) \ -iname "System*" -o -iname "init*img" -o -iname "vm*" -o -iname "ct*" \) \
@@ -356,59 +364,66 @@ survey_kernel_files() {
mapfile -t lib_module_dirs < <(find /lib/modules -mindepth 1 -maxdepth 1 -type d 2>/dev/null | sort) mapfile -t lib_module_dirs < <(find /lib/modules -mindepth 1 -maxdepth 1 -type d 2>/dev/null | sort)
local booted=`uname -r` local booted=`uname -r`
local g
debug "** You are running kernel $booted **" debug "** You are running kernel $booted **"
# set -veux
local file
local fiile
for file in "${kernel_files[@]}"; do
# echo "kernel_file [$file]"
[[ $file =~ /boot/initramfs* ]] && continue
[[ $file =~ *.fc*.x86_64 ]] && continue
fiile=$( basename $file )
fiile=${fiile%.img}
for f in "${kernel_files[@]}"; do if [[ $fiile =~ $booted ]]; then
[[ $f = /boot/init* ]] || continue debug " ignoring booted CT kernel $file"
[[ $f =~ *.fc*.x86_64 ]] || continue sleep 2
f=${f#/boot/init*-} continue
f=${f%.img}
if [[ $f =~ $booted ]]; then
debug "ignoring CT kernel $f"
else else
g=$( kernel_to_relnum $f ) ser=$( kernel_to_relnum ${fiile#*ct} )
# debug "f[$f] g[$g]" kernel_sort_serial[$ser]=1
kernel_sort_names[$g]="$f" # debug "file[$file] ser[$ser]"
removable_kernels+=($f) kernel_sort_names["$file"]="$ser"
removable_kernels+=($file)
fi fi
done done
if (( $verbose > 0 )) && (( ${#kernel_sort_names[@]} > 0 )); then sleep 2
echo "Removable CT kernels:" local booted_ser=$( kernel_to_relnum $booted )
while read g; do if (( ${#kernel_sort_names[@]} > 0 )); then
printf " [%s]\n" "${kernel_sort_names[$g]}" declare -A ser_files
for file in "${!kernel_sort_names[@]}"; do
ser="${kernel_sort_names[$file]}"
done
note "Removable CT kernels:"
while read ser; do
(( $verbose > 0 )) && printf " kernel file [%s]\n" "${kernel_sort_names[$ser]}"
removable_kernels+=(${kernel_sort_names["$ser"]})
done < <(echo "${!kernel_sort_names[@]}" | sort | head -n -1) done < <(echo "${!kernel_sort_names[@]}" | sort | head -n -1)
fi fi
note "Module directories elegible for removal: " # note "Module directories elegible for removal: "
for f in "${lib_module_dirs[@]}"; do for file in "${lib_module_dirs[@]}"; do
# echo " [$f]" file=${file#/lib/modules/}
f=${f#/lib/modules/} if [[ $file =~ $booted ]]; then
#f=${f%.img} debug "Ignoring booted module directory $file"
#f=${f%.fc*}
if [[ $f =~ $booted ]]; then
debug "Ignoring booted module directory $f"
continue continue
elif [[ $f = *.fc??.x86_64 ]]; then elif [[ $file = *.fc??.x86_64 ]]; then
debug "Ignoring Fedora module directory $f" debug "Ignoring Fedora module directory $file"
continue continue
else else
g=$( kernel_to_relnum $f ) ser=$( kernel_to_relnum $file )
debug "MODULE f[$f] g[$g] booted [$booted]" libmod_sort_names["$ser"]="$file"
# removable_libmod_dirs+=($f)
libmod_sort_names[$g]="$f"
fi fi
done done
if (( $verbose > 0 )) && (( ${#libmod_sort_names[@]} > 0 )); then if (( $verbose > 0 )) && (( ${#libmod_sort_names[@]} > 0 )); then
echo "Removable libmod dirs: " # echo "Removable libmod dirs: "
while read f; do while read file; do
if [[ $f =~ $booted ]]; then if [[ $file =~ $booted ]]; then
debug "Ignoring booted $booted module directory $f" debug "Ignoring booted $booted module directory $file"
continue continue
fi fi
removable_libmod_dirs+=(${libmod_sort_names[$f]}) removable_libmod_dirs+=(${libmod_sort_names["$file"]})
echo " [${libmod_sort_names[$f]}]" echo " [${libmod_sort_names["$file"]}]"
done < <( printf "%s\n" "${!libmod_sort_names[@]}" | sort | head -n -1) done < <( printf "%s\n" "${!libmod_sort_names[@]}" | sort | head -n -1)
fi fi
@@ -418,7 +433,6 @@ survey_kernel_files() {
local pkg local pkg
local k_pkgs=() local k_pkgs=()
#local k_ver=()
removable_pkg_series=() removable_pkg_series=()
# need to avoid most recent fedora kernel # need to avoid most recent fedora kernel
@@ -427,7 +441,6 @@ survey_kernel_files() {
return 0 return 0
fi fi
local ur=$( uname -r ) local ur=$( uname -r )
#local current_relnum=$( kernel_to_relnum $ur )
local kern_pkgs=( $( rpm -qa 'kernel*' | sort ) ) local kern_pkgs=( $( rpm -qa 'kernel*' | sort ) )
local ser local ser
local zpkg local zpkg
@@ -453,11 +466,10 @@ survey_kernel_files() {
zpkg=${pkg%.fc??.x86_64} zpkg=${pkg%.fc??.x86_64}
if [[ $zpkg =~ $booted ]]; then if [[ $zpkg =~ $booted ]]; then
#echo "ignoring k pkg $zpkg cuz $booted"
continue continue
fi fi
kernel_series=$( kernel_to_relnum ${zpkg##kernel-} ) kernel_series=$( kernel_to_relnum ${zpkg##kernel-} )
#1>&2 echo "....... ....... Kernel series[$kernel_series]"
pkg_to_ser[$pkg]="$kernel_series" pkg_to_ser[$pkg]="$kernel_series"
pkg_sort_names[$kernel_series]=1 pkg_sort_names[$kernel_series]=1
done done
@@ -466,22 +478,13 @@ survey_kernel_files() {
debug " can remove series [$ser] " debug " can remove series [$ser] "
removable_pkg_series+=($ser) removable_pkg_series+=($ser)
done < <( printf "%s\n" "${!pkg_sort_names[@]}" | sort | head -n -1) done < <( printf "%s\n" "${!pkg_sort_names[@]}" | sort | head -n -1)
# for ser in "${!pkg_sort_names[@]}"; do
# debug " can remove series [$ser] "
# #removable_pkg_series+=($ser)
# done
for pkg in "${k_pkgs[@]}"; do for pkg in "${k_pkgs[@]}"; do
pkg=${pkg%.fc??.x86_64} pkg=${pkg%.fc??.x86_64}
ser=$( kernel_to_relnum $pkg ) ser=$( kernel_to_relnum $pkg )
# echo " $pkg -> $ser"
for zpkg in "${removable_pkg_series[@]}"; do for zpkg in "${removable_pkg_series[@]}"; do
#debug " $zser ~~ $ser ~~ $pkg"
if (( $ser == $zpkg )); then if (( $ser == $zpkg )); then
# echo " removable: $ser, $zpkg >> $pkg"
removable_packages+=($pkg) removable_packages+=($pkg)
#else
# echo " no"
fi fi
done done
done done
@@ -489,13 +492,16 @@ survey_kernel_files() {
set +x set +x
if (( $quiet < 1 )); then if (( $quiet < 1 )); then
if (( ${#removable_packages[@]} > 0 )); then if (( ${#removable_packages[@]} > 0 )); then
printf "Would remove packages %s\n" "${removable_packages[@]}" echo "Would remove packages "
printf " %s\n" "${removable_packages[@]}"
fi fi
if (( ${#removable_kernels[@]} > 0 )); then if (( ${#removable_kernels[@]} > 0 )); then
printf "Would remove CT Kernels %s\n" "${removable_kernels[@]}" echo "Would remove kernel files "
printf " %s\n" "${removable_kernels[@]}"
fi fi
if (( ${#removable_libmod_dirs[@]} > 0 )); then if (( ${#removable_libmod_dirs[@]} > 0 )); then
printf "Would remove CT modules %s\n" "${removable_libmod_dirs[@]}" echo "Would remove lib module directories "
printf " %s\n" "${removable_libmod_dirs[@]}"
fi fi
fi fi
} # ~survey_kernel_files } # ~survey_kernel_files