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 "" | ||||||
|     echo "" |     echo "" | ||||||
|     note "Cleaning old CT kernels..." |     note "Cleaning old CT kernels..." | ||||||
|     sleep 2 |  | ||||||
|     local f |     local f | ||||||
|     for f in "${removable_packages[@]}"; do |     if (( ${#removable_packages[@]} > 0 )); then | ||||||
|         echo "$f\*" |         for f in "${removable_packages[@]}"; do | ||||||
|     done | xargs /usr/bin/rpm -hve |             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 |     if (( ${#removable_libmod_dirs[@]} > 0 )); then | ||||||
|         echo "r m $f" |         for f in "${removable_libmod_dirs[@]}"; do | ||||||
|     done |             echo "/lib/modules/$f" | ||||||
|     for f in "${removable_libmod_dirs[@]}"; do |         done | xargs rm -rf | ||||||
|         echo "r m /lib/modules/$f" |     fi | ||||||
|     done |  | ||||||
|     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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jed Reynolds
					Jed Reynolds