mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 02:38:03 +00:00 
			
		
		
		
	check_large_files.bash: now erases unused ct kernels and module directories
This commit is contained in:
		| @@ -214,18 +214,23 @@ clean_old_kernels() { | ||||
|     echo "" | ||||
|     echo "" | ||||
|     note "Cleaning old CT kernels..." | ||||
|     sleep 2 | ||||
|     local f | ||||
|     for f in "${removable_packages[@]}"; do | ||||
|         echo "$f\*" | ||||
|     done | xargs /usr/bin/rpm -hve | ||||
|     if (( ${#removable_packages[@]} > 0 )); then | ||||
|         for f in "${removable_packages[@]}"; do | ||||
|             echo "$f\*" | ||||
|         done | xargs /usr/bin/rpm -hve | ||||
|     fi | ||||
|     if (( ${#removable_kernels[@]} > 0 )); then | ||||
|         for f in "${removable_kernels[@]}"; do | ||||
|             echo "$f" | ||||
|         done | xargs rm -f | ||||
|     fi | ||||
|  | ||||
|     for f in "${removable_kernels[@]}"; do | ||||
|         echo "r m $f" | ||||
|     done | ||||
|     for f in "${removable_libmod_dirs[@]}"; do | ||||
|         echo "r m /lib/modules/$f" | ||||
|     done | ||||
|     if (( ${#removable_libmod_dirs[@]} > 0 )); then | ||||
|         for f in "${removable_libmod_dirs[@]}"; do | ||||
|             echo "/lib/modules/$f" | ||||
|         done | xargs rm -rf | ||||
|     fi | ||||
|     echo "" | ||||
|     echo "" | ||||
| } | ||||
| @@ -346,9 +351,12 @@ survey_kernel_files() { | ||||
|     removable_kernels=() | ||||
|     removable_libmod_dirs=() | ||||
|     removable_packages=() | ||||
|     kernel_sort_names=() | ||||
|     declare -A kernel_sort_names=() | ||||
|     declare -A kernel_sort_serial=() | ||||
|     declare -A pkg_sort_names=() | ||||
|     libmod_sort_names=() | ||||
|     declare -A libmod_sort_names=() | ||||
|     local ser | ||||
|     local file | ||||
|     note "Surveying Kernel files" | ||||
|     mapfile -t kernel_files < <(find /boot -maxdepth 1 -type f -a \( \ | ||||
|         -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) | ||||
|     local booted=`uname -r` | ||||
|  | ||||
|     local g | ||||
|     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 | ||||
|         [[ $f = /boot/init* ]] || continue | ||||
|         [[ $f =~ *.fc*.x86_64 ]] || continue | ||||
|         f=${f#/boot/init*-} | ||||
|         f=${f%.img} | ||||
|  | ||||
|         if [[ $f =~ $booted ]]; then | ||||
|             debug "ignoring CT kernel $f" | ||||
|         if [[ $fiile =~ $booted ]]; then | ||||
|             debug "    ignoring booted CT kernel $file" | ||||
|             sleep 2 | ||||
|             continue | ||||
|         else | ||||
|             g=$( kernel_to_relnum $f ) | ||||
|             # debug "f[$f] g[$g]" | ||||
|             kernel_sort_names[$g]="$f" | ||||
|             removable_kernels+=($f) | ||||
|             ser=$( kernel_to_relnum ${fiile#*ct} ) | ||||
|             kernel_sort_serial[$ser]=1 | ||||
|             # debug "file[$file] ser[$ser]" | ||||
|             kernel_sort_names["$file"]="$ser" | ||||
|             removable_kernels+=($file) | ||||
|         fi | ||||
|     done | ||||
|     if (( $verbose > 0 )) && (( ${#kernel_sort_names[@]} > 0 )); then | ||||
|         echo "Removable CT kernels:" | ||||
|         while read g; do | ||||
|             printf "    [%s]\n" "${kernel_sort_names[$g]}" | ||||
|     sleep 2 | ||||
|     local booted_ser=$( kernel_to_relnum $booted ) | ||||
|     if (( ${#kernel_sort_names[@]} > 0 )); then | ||||
|         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) | ||||
|     fi | ||||
|  | ||||
|     note "Module directories elegible for removal: " | ||||
|     for f in "${lib_module_dirs[@]}"; do | ||||
|         # echo "     [$f]" | ||||
|         f=${f#/lib/modules/} | ||||
|         #f=${f%.img} | ||||
|         #f=${f%.fc*} | ||||
|         if [[ $f =~ $booted ]]; then | ||||
|             debug "Ignoring booted module directory $f" | ||||
|     # note "Module directories elegible for removal: " | ||||
|     for file in "${lib_module_dirs[@]}"; do | ||||
|         file=${file#/lib/modules/} | ||||
|         if [[ $file =~ $booted ]]; then | ||||
|             debug "Ignoring booted module directory $file" | ||||
|             continue | ||||
|         elif [[ $f = *.fc??.x86_64 ]]; then | ||||
|             debug "Ignoring Fedora module directory $f" | ||||
|         elif [[ $file = *.fc??.x86_64 ]]; then | ||||
|             debug "Ignoring Fedora module directory $file" | ||||
|             continue | ||||
|         else | ||||
|             g=$( kernel_to_relnum $f ) | ||||
|             debug "MODULE f[$f] g[$g] booted [$booted]" | ||||
|             # removable_libmod_dirs+=($f) | ||||
|             libmod_sort_names[$g]="$f" | ||||
|             ser=$( kernel_to_relnum $file ) | ||||
|             libmod_sort_names["$ser"]="$file" | ||||
|         fi | ||||
|     done | ||||
|     if (( $verbose > 0 )) && (( ${#libmod_sort_names[@]} > 0 )); then | ||||
|         echo "Removable libmod dirs: " | ||||
|         while read f; do | ||||
|             if [[ $f =~ $booted ]]; then | ||||
|                 debug "Ignoring booted $booted module directory $f" | ||||
|         # echo "Removable libmod dirs: " | ||||
|         while read file; do | ||||
|             if [[ $file =~ $booted ]]; then | ||||
|                 debug "Ignoring booted $booted module directory $file" | ||||
|                 continue | ||||
|             fi | ||||
|             removable_libmod_dirs+=(${libmod_sort_names[$f]}) | ||||
|             echo "    [${libmod_sort_names[$f]}]" | ||||
|             removable_libmod_dirs+=(${libmod_sort_names["$file"]}) | ||||
|             echo "    [${libmod_sort_names["$file"]}]" | ||||
|         done < <( printf "%s\n" "${!libmod_sort_names[@]}" | sort | head -n -1) | ||||
|     fi | ||||
|  | ||||
| @@ -418,7 +433,6 @@ survey_kernel_files() { | ||||
|  | ||||
|     local pkg | ||||
|     local k_pkgs=() | ||||
|     #local k_ver=() | ||||
|     removable_pkg_series=() | ||||
|  | ||||
|     # need to avoid most recent fedora kernel | ||||
| @@ -427,7 +441,6 @@ survey_kernel_files() { | ||||
|         return 0 | ||||
|     fi | ||||
|     local ur=$( uname -r ) | ||||
|     #local current_relnum=$( kernel_to_relnum $ur ) | ||||
|     local kern_pkgs=( $( rpm -qa 'kernel*' | sort ) ) | ||||
|     local ser | ||||
|     local zpkg | ||||
| @@ -453,11 +466,10 @@ survey_kernel_files() { | ||||
|         zpkg=${pkg%.fc??.x86_64} | ||||
|  | ||||
|         if [[ $zpkg =~ $booted ]]; then | ||||
|             #echo "ignoring k pkg $zpkg cuz $booted" | ||||
|             continue | ||||
|         fi | ||||
|         kernel_series=$( kernel_to_relnum ${zpkg##kernel-} ) | ||||
|         #1>&2 echo "....... ....... Kernel series[$kernel_series]" | ||||
|  | ||||
|         pkg_to_ser[$pkg]="$kernel_series" | ||||
|         pkg_sort_names[$kernel_series]=1 | ||||
|     done | ||||
| @@ -466,22 +478,13 @@ survey_kernel_files() { | ||||
|         debug "    can remove series [$ser] " | ||||
|         removable_pkg_series+=($ser) | ||||
|     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 | ||||
|         pkg=${pkg%.fc??.x86_64} | ||||
|         ser=$( kernel_to_relnum $pkg ) | ||||
|         # echo "        $pkg -> $ser" | ||||
|         for zpkg in "${removable_pkg_series[@]}"; do | ||||
|             #debug "     $zser ~~ $ser ~~ $pkg" | ||||
|             if (( $ser == $zpkg )); then | ||||
|                 # echo "       removable:    $ser, $zpkg >> $pkg" | ||||
|                 removable_packages+=($pkg) | ||||
|             #else | ||||
|             #    echo "      no" | ||||
|             fi | ||||
|         done | ||||
|     done | ||||
| @@ -489,13 +492,16 @@ survey_kernel_files() { | ||||
|     set +x | ||||
|     if (( $quiet < 1 )); then | ||||
|         if (( ${#removable_packages[@]} > 0 )); then | ||||
|             printf "Would remove packages %s\n" "${removable_packages[@]}" | ||||
|             echo "Would remove packages " | ||||
|             printf "    %s\n" "${removable_packages[@]}" | ||||
|         fi | ||||
|         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 | ||||
|         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 | ||||
| } # ~survey_kernel_files | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jed Reynolds
					Jed Reynolds