මෙම පිළිතුරේ වාසිය වන්නේ තෙවන පාර්ශවීය යෙදුම් ස්ථාපනය නොකර ස්වදේශීය උබුන්ටු බෑෂ් භාවිතා කිරීමයි. අභිරුචි කර්නල් භාවිතා කරන්නන් ඔවුන්ගේ අවශ්යතාවන්ට සරිලන පරිදි මෙම බෑෂ් ස්ක්රිප්ට් භාවිතා නොකළ apt
හෝ dpkg
වෙනස් කළ හැකිය. මෙම පිළිතුර පදනම් වී ඇත්තේ ( පැරණි කර්නල් වර්ගිකව තෝරා ගන්නේ කෙසේද ).
ශුන්යතාවය පදනම් කරගත් විසඳුම
ලැයිස්තුවක් සැකසීමට සහ රේඩියෝ බොත්තම් සහිත අයිතම තෝරා ගැනීමට Zenity ටර්මිනලයට ලස්සන GUI අතුරු මුහුණතක් සපයයි :
මාතෘකාවෙන් දැක්වෙන පරිදි, ඔබ ආරම්භ කළ වත්මන් කර්නලය ඉවත් කළ නොහැකි අතර එය ලැයිස්තුවට ඇතුළත් නොවේ. වාර්තා කරන ලද ප්රමාණය /boot
ඩිරෙක්ටරියේ කොපමණ ප්රමාණයක් ඉතිරි වේද යන්නයි . ඔබේ තැටියේ තවත් බොහෝ දේ සුරකින බැවින් කර්නල් ද්විමය වෙනත් ප්රදේශවලද වාසය කරයි. ජූලි 27, 2017 සටහන: නාමාවලි /usr/src/*kernel_version*
සහ /lib/modules/*kernel_version*
දැන් ඇතුළත් කර ඇත.
මෙම නවීකරණය කරන ලද දිනය භාවිතා සොයා ඇත stat
විධාන. මෙය භාවිතා කරමින් කර්නලය ආරම්භ කරන සෑම අවස්ථාවකම එම දිනය "ස්පර්ශ" වේ ( නිශ්චිත කර්නල් අනුවාදයක් අවසන් වරට ආරම්භ කරන ලද්දේ කෙසේදැයි ඔබ සොයා ගන්නේ කෙසේද? ) ක්රෝන් නැවත පණගැන්වීමේ ස්ක්රිප්ට්. කෙසේ වෙතත්, ඔබේ පද්ධතියේ දිනය කර්නල් මුදා හැරීමේ දිනය වනු ඇත, ඔබ එය ආරම්භ කළ අවසන් අවස්ථාව නොවේ.
apt-get purge
ගබ්සා කිරීමට ඔබට අවස්ථාවක් ලබා දෙයි
පිරිසිදු කරන සෑම දෙයක්ම බැලීමට සහ නැවත ලබා ගත හැකි මුළු තැටි අවකාශය (තරමක් නොමඟ යවන) බැලීමට ඔබට අවසාන අවස්ථාවක් ලබා දී ඇත:
The following packages will be REMOVED:
linux-headers-4.7.1-040701* linux-headers-4.7.1-040701-generic*
linux-headers-4.7.2-040702* linux-headers-4.7.2-040702-generic*
linux-headers-4.7.3-040703* linux-headers-4.7.3-040703-generic*
linux-headers-4.8.1-040801* linux-headers-4.8.1-040801-generic*
linux-headers-4.8.10-040810* linux-headers-4.8.10-040810-generic*
linux-headers-4.8.11-040811* linux-headers-4.8.11-040811-generic*
linux-headers-4.8.4-040804* linux-headers-4.8.4-040804-generic*
linux-headers-4.8.5-040805* linux-headers-4.8.5-040805-generic*
linux-image-4.7.1-040701-generic* linux-image-4.7.2-040702-generic*
linux-image-4.7.3-040703-generic* linux-image-4.8.1-040801-generic*
linux-image-4.8.10-040810-generic* linux-image-4.8.11-040811-generic*
linux-image-4.8.4-040804-generic* linux-image-4.8.5-040805-generic*
0 upgraded, 0 newly installed, 24 to remove and 2 not upgraded.
After this operation, 2,330 MB disk space will be freed.
Do you want to continue? [Y/n]
කේතය
නමින් ක්රියාත්මක ගොනුව මෙම කේතය පිටපත් rm-kernels
දී /usr/local/bin
:
#!/bin/bash
# NAME: rm-kernels
# PATH: /usr/local/bin
# DESC: Provide zenity item list of kernels to remove
# DATE: Mar 10, 2017. Modified Jul 28, 2017.
# NOTE: Will not delete current kernel.
# With 10 kernels on an SSD, empty cache from sudo prompt (#) using:
# # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
# First time for `du` 34 seconds.
# Second time for `du` 1 second.
# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
# By default `du` is not used and estimated size is displayed.
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
zenity --error --text "root access required. Use: sudo rm-kernels"
exit 99
fi
OLDIFS="$IFS"
IFS="|"
choices=()
current_version=$(uname -r)
for f in /boot/vmlinuz*
do
if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
[[ $f =~ vmlinuz-(.*) ]]
v=${BASH_REMATCH[1]} # example: 4.9.21-040921-generic
v_main="${v%-*}" # example: 4.9.21-040921
# Kernel size in /boot/*4.9.21-040921-generic*
s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')
if [[ $# -ne 0 ]] ; then # Was a parameter passed?
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
# Kernel headers size in /usr/src/*4.9.21-040921*
s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
else
s2="0M" # Linux Headers are not installed
fi
# Kernel image size in /lib/modules/4.9.21-040921-generic*
s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
else
# Estimate sizof of optional headers at 125MB and size of image at 220MB
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
s2="125M"
else
s2="0M" # Linux Headers are not installed
fi
s3="220M"
fi
# Strip out "M" provided by human readable option of du and add 3 sizes together
s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
t=$(( t + s ))
s=$s" MB"
d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
choices=("${choices[@]}" false "$v" "$d" "$s")
done
# adjust width & height below for your screen 640x480 default for 1920x1080 HD screen
# also adjust font="14" below if blue text is too small or too large
choices=(`zenity \
--title "rm-kernels - Total: $t MB excluding: $current_version" \
--list \
--separator="$IFS" \
--checklist --multiple \
--text '<span foreground="blue" font="14">Check box next to kernel(s) to remove</span>' \
--width=640 \
--height=480 \
--column "Select" \
--column "Kernel Version Number" \
--column "Modified Date" \
--column " Size " \
"${choices[@]}"`)
IFS="$OLDIFS"
i=0
list=""
for choice in "${choices[@]}" ; do
if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
((i++))
short_choice=$(echo $choice | cut -f1-2 -d"-")
header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)
# If -lowlatency and -generic are purged at same time the _all header directory
# remains on disk for specific version with no -generic or -lowlatency below.
if [[ $header_count -lt 3 ]]; then
# Remove all w.x.y-zzz headers
list="$list""linux-image-$choice- linux-headers-$short_choice"
else
# Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
list="$list""linux-image-$choice- linux-headers-$choice"
fi
done
if [ "$i" -gt 0 ] ; then
apt-get purge $list
fi
සටහන: ගොනුව සෑදීමට ඔබට sudo අවසරය අවශ්ය බැවින් මෙය භාවිතා කරන්න:
gksu gedit /usr/local/bin/rm-kernels
ගොනු ක්රියාත්මක කළ හැකි භාවිතය සඳහා:
sudo chmod +x /usr/local/bin/rm-kernels
සේවාදායක අනුවාදය
rm-kernels-server
එකවර කර්නල් වර්ගිකව මකා දැමීමේ සේවාදායක අනුවාදය වේ. GUI (චිත්රක) සංවාද කොටුවක් වෙනුවට පිරිසිදු කිරීම සඳහා කර්නල් තෝරා ගැනීමට පෙළ පදනම් කරගත් සංවාද කොටුවක් භාවිතා කරයි.
ඩයලොග් සුපුරුදු උබුන්ටු ඩෙස්ක්ටොප් ස්ථාපනයෙහි ඇති නමුත් උබුන්ටු සේවාදායකයේ නොවේ.
නියැදි තිරය
rm-kernels-server
bash කේතය
#!/bin/bash
# NAME: rm-kernels-server
# PATH: /usr/local/bin
# DESC: Provide dialog checklist of kernels to remove
# Non-GUI, text based interface for server distro's.
# DATE: Mar 10, 2017. Modified Jul 28, 2017.
# NOTE: Will not delete current kernel.
# With 10 kernels on an SSD, empty cache from sudo prompt (#) using:
# # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
# First time for `du` 34 seconds.
# Second time for `du` 1 second.
# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
# By default `du` is not used and estimated size is displayed.
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
echo "root access required. Use: sudo rm-kernels-server"
exit 99
fi
# Must have the dialog package. On Servers, not installed by default
command -v dialog >/dev/null 2>&1 || { echo >&2 "dialog package required but it is not installed. Aborting."; exit 99; }
OLDIFS="$IFS"
IFS="|"
item_list=() # Deviate from rm-kernels here.
current_version=$(uname -r)
i=0
for f in /boot/vmlinuz*
do
if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
[[ $f =~ vmlinuz-(.*) ]]
((i++)) # Item List
v=${BASH_REMATCH[1]} # example: 4.9.21-040921-generic
v_main="${v%-*}" # example: 4.9.21-040921
# Kernel size in /boot/*4.9.21-040921-generic*
s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')
if [[ $# -ne 0 ]] ; then # Was a parameter passed?
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
# Kernel headers size in /usr/src/*4.9.21-040921*
s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
else
s2="0M" # Linux Headers are not installed
fi
# Kernel image size in /lib/modules/4.9.21-040921-generic*
s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
else
# Estimate sizof of optional headers at 125MB and size of image at 220MB
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
s2="125M"
else
s2="0M" # Linux Headers are not installed
fi
s3="220M"
fi
# Strip out "M" provided by human readable option of du and add 3 sizes together
s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
t=$(( t + s ))
s=$s" MB"
d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
item_list=("${item_list[@]}" "$i" "$v ! $d ! $s" off)
done
cmd=(dialog --backtitle "rm-kernels-server - Total: $t MB excluding: $current_version" \
--title "Use space bar to toggle kernel(s) to remove" \
--column-separator "!" \
--separate-output \
--ascii-lines \
--checklist " Kernel Version --------- Modified Date Size" 20 60 15)
selections=$("${cmd[@]}" "${item_list[@]}" 2>&1 >/dev/tty)
IFS=$OLDIFS
if [ $? -ne 0 ] ; then
echo cancel selected
exit 1
fi
i=0
choices=()
for select in $selections ; do
((i++))
j=$(( 1 + ($select - 1) * 3 ))
choices[i]=$(echo ${item_list[j]} | cut -f1 -d"!")
done
i=0
list=""
for choice in "${choices[@]}" ; do
if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
((i++))
short_choice=$(echo $choice | cut -f1-2 -d"-")
header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)
# If -lowlatency and -generic are purged at same time the _all header directory
# remains on disk for specific version with no -generic or -lowlatency below.
if [[ $header_count -lt 3 ]]; then
# Remove all w.x.y-zzz headers
list="$list""linux-image-$choice- linux-headers-$short_choice"
else
# Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
list="$list""linux-image-$choice- linux-headers-$choice"
fi
done
if [ "$i" -gt 0 ] ; then
apt-get purge $list
fi
සටහන: පෙට්ටි ඇඳීම සඳහා රේඛීය-දිනුම් විස්තාරිත අක්ෂර කට්ටලය ( අකමැති) "+ ----- +" සමඟ ප්රතිස්ථාපනය කිරීමට dialog
නියෝගයට ඇමතුම ලබා දී ඇත. ඔබ මෙම පෙනුමට අකමැති නම් ඔබට කිසිදු පෙට්ටියක් සඳහා විධානය භාවිතා කළ හැකිය .--ascii-lines
ssh
--no-lines
ජූලි 28, 2017 යාවත්කාලීන කිරීම්
එක් එක් කර්නලයේ ගණනය කළ ප්රමාණය ලබාගෙන ඇති /boot/*kernel_version*
අතර එයින් ගොනු 50 ක් MB 50 MB වේ. /usr/src/*kernel_version*
සහ සහ ගොනු ඇතුළත් කිරීමට සූත්රය වෙනස් වී ඇත /lib/modules/*kernel_version*
. එක් එක් කර්නලය සඳහා ගණනය කළ ප්රමාණය දැන් MB 400 MB වේ. සඳහා ඉහත කේතය rm-kernels
හා rm-kernels-server
යාවත්කාලීන කර ඇත. කෙසේ වෙතත්, ඉහත නියැදි තිර තවමත් මෙම වෙනස්කම් පිළිබිඹු නොකරයි.
පෙරනිමිය නම්, ලිනක්ස්-ශීර්ෂ සඳහා ගොනු ප්රමාණය 125 MB හා ලිනක්ස්-රූපය 220 MB ලෙස තක්සේරු කිරීමයි du
. du
ඕනෑම පරාමිතියක් ස්ක්රිප්ටයට යොමු කිරීමෙන් සැබෑ ප්රමාණය ලබා ගැනීම .
සියලුම කර්නල් ප්රමාණයන්හි (ඉවත් කළ නොහැකි වර්තමාන ධාවන අනුවාදය හැර) දැන් මාතෘකා තීරුවේ දැක්වේ.
එක් එක් කර්නලයේ අවසාන පිවිසුම් දිනය පෙන්වීමට භාවිතා කරන සංවාද කොටුව . මෙම දිනය උපස්ථ හෝ ඒ හා සමාන මෙහෙයුම් වලදී සියලුම කර්නල් සඳහා ස්කන්ධ නැවත ලිවිය හැකිය. සංවාද කොටුව දැන් නවීකරණය කරන ලද දිනය පෙන්වයි .