История изменений
Исправление megabaks, (текущая версия) :
что не хочу, чтобы удалялось:
vmlinuz-2.6.32-openvz-044.11-el6-gentoo-slep-1-gcbd8877 vmlinuz-3.2.9-gentoo+ 2.6.39-gentoo-r2
#!/bin/bash
SRC="/usr/src/linux"
KERNELS="$(file /boot/* | grep "Linux.*version")"
############################################################################
####### kernel path and real name ##########################################
kernel_version() {
makefile="${SRC}-${1}/Makefile"
if [ -f "${makefile}" ];then
VERSION="$(awk '/^VERSION =/ {print $3}' "${makefile}")"
PATCHLEVEL="$(awk '/^PATCHLEVEL =/ {print $3}' "${makefile}")"
SUBLEVEL="$(awk '/^SUBLEVEL =/ {print $3}' "${makefile}")"
EXTRAVERSION="$(awk '/^EXTRAVERSION =/ {print $3}' "${makefile}")"
FULL_KERNEL="${VERSION}.${PATCHLEVEL}.${SUBLEVEL}${EXTRAVERSION}"
fi
}
true_kernel() {
if [ -n "${1}" ];then
KERNEL="${1##*linux-}"
KERNEL="${KERNEL%/}"
fi
if [ -d "${SRC}-${KERNEL}" ];then
kernel_version ${KERNEL}
else
for kernel in `ls -d --color=never /usr/src/linux-*`;do
kernel="${kernel##*/linux-}"
kernel_version ${kernel}
if [ "${KERNEL}" == "${FULL_KERNEL}" ];then
KERNEL="${kernel}"
break
fi
done
fi
}
############################################################################
while read line;do
FILE="`awk '{print $1}' <<< "${line}"`"
FILE="${FILE%:}"
version="`awk '{print $9}' <<< "${line}"`"
true_kernel ${version}
if ! [ -f "${SRC}-${KERNEL}/Makefile" ] && ! [ -d "/lib/modules/${version}" ];then
REMOVE_FILES+="${FILE}\n"
fi
done <<< "${KERNELS}"
VERSIONS="$(awk '{print $9}' <<< "${KERNELS}")"
for mod_dir in `ls -1 --color=never /lib/modules/ | grep -v "${VERSIONS}"`;do
REMOVE_MOD_DIRS+="/lib/modules/${mod_dir}\n"
done
for src_dir in `ls -d1 --color=never ${SRC}*`;do
[ -f "${src_dir}/Makefile" ] || REMOVE_DIRS+="${src_dir}\n"
done
for ignor in ${IGNOR};do
echo "Игнорируется: ${ignor}"
REMOVE_FILES="${REMOVE_FILES//"${ignor}"/}"
REMOVE_DIRS="${REMOVE_DIRS//"${ignor}"/}"
REMOVE_MOD_DIRS="${REMOVE_MOD_DIRS//"${ignor}"/}"
done
echo -e "\nБудут удалены следующие файлы:\n"
echo -e "${REMOVE_FILES}" | sort -u | sed '/^$/d'
echo -e "\nБудут удалены следующие диры:\n"
echo -e "${REMOVE_DIRS}" | sort -u | sed '/^$/d'
echo -e "${REMOVE_MOD_DIRS}" | sort -u | sed '/^$/d'
IGNOR="/lib/modules/3.2.1-ololo /boot/3.4.3-pf-uksm /boot/3.2.1-r2-pf" sh kernel-cleaner/kernel-cleaner
Игнорируется: /lib/modules/3.2.1-ololo
Игнорируется: /boot/3.4.3-pf-uksm
Игнорируется: /boot/3.2.1-r2-pf
Будут удалены следующие файлы:
/boot/3.1.5-pf
/boot/3.1.5-pf1
/boot/3.1.6-pf
/boot/3.2.1-pf
/boot/3.2.4-pf
/boot/3.2.7-pf
/boot/3.3.2-pf
/boot/3.3.6-pf
/boot/3.4.3-pf
/boot/3.4.5-pf-uksm
Будут удалены следующие диры:
/usr/src/linux-2.2.2-ololo
/usr/src/linux-3.3.6-pf
/lib/modules/3.2.1-trololo
попробуй на всякий случай
Исходная версия megabaks, :
что не хочу, чтобы удалялось:
vmlinuz-2.6.32-openvz-044.11-el6-gentoo-slep-1-gcbd8877 vmlinuz-3.2.9-gentoo+ 2.6.39-gentoo-r2
#!/bin/bash
SRC="/usr/src/linux"
KERNELS="$(file /boot/* | grep "Linux.*version")"
############################################################################
####### kernel path and real name ##########################################
kernel_version() {
makefile="${SRC}-${1}/Makefile"
if [ -f "${makefile}" ];then
VERSION="$(awk '/^VERSION =/ {print $3}' "${makefile}")"
PATCHLEVEL="$(awk '/^PATCHLEVEL =/ {print $3}' "${makefile}")"
SUBLEVEL="$(awk '/^SUBLEVEL =/ {print $3}' "${makefile}")"
EXTRAVERSION="$(awk '/^EXTRAVERSION =/ {print $3}' "${makefile}")"
FULL_KERNEL="${VERSION}.${PATCHLEVEL}.${SUBLEVEL}${EXTRAVERSION}"
fi
}
true_kernel() {
if [ -n "${1}" ];then
KERNEL="${1##*linux-}"
KERNEL="${KERNEL%/}"
fi
if [ -d "${SRC}-${KERNEL}" ];then
kernel_version ${KERNEL}
else
for kernel in `ls -d --color=never /usr/src/linux-*`;do
kernel="${kernel##*/linux-}"
kernel_version ${kernel}
if [ "${KERNEL}" == "${FULL_KERNEL}" ];then
KERNEL="${kernel}"
break
fi
done
fi
}
############################################################################
while read line;do
FILE="`awk '{print $1}' <<< "${line}"`"
FILE="${FILE%:}"
version="`awk '{print $9}' <<< "${line}"`"
true_kernel ${version}
if ! [ -f "${SRC}-${KERNEL}/Makefile" ] && ! [ -d "/lib/modules/${version}" ];then
REMOVE_FILES+="${FILE}\n"
fi
done <<< "${KERNELS}"
VERSIONS="$(awk '{print $9}' <<< "${KERNELS}")"
for mod_dir in `ls -1 --color=never /lib/modules/ | grep -v "${VERSIONS}"`;do
REMOVE_MOD_DIRS+="/lib/modules/${mod_dir}\n"
done
for src_dir in `ls -d1 --color=never ${SRC}*`;do
[ -f "${src_dir}/Makefile" ] || REMOVE_DIRS+="${src_dir}\n"
done
for ignor in ${IGNOR};do
echo "Игнорируется: ${ignor}"
REMOVE_FILES="${REMOVE_FILES//"${ignor}"/}"
REMOVE_DIRS="${REMOVE_DIRS//"${ignor}"/}"
REMOVE_MOD_DIRS="${REMOVE_MOD_DIRS//"${ignor}"/}"
done
echo -e "\nБудут удалены следующие файлы:\n"
echo -e "${REMOVE_FILES}" | sort -u | sed '/^$/d'
echo -e "\nБудут удалены следующие диры:\n"
echo -e "${REMOVE_DIRS}" | sort -u | sed '/^$/d'
echo -e "${REMOVE_MOD_DIRS}" | sort -u | sed '/^$/d'
#rm -r ${REMOVE_MOD_DIRS//\\n/ }
IGNOR="/lib/modules/3.2.1-ololo /boot/3.4.3-pf-uksm /boot/3.2.1-r2-pf" sh kernel-cleaner/kernel-cleaner
Игнорируется: /lib/modules/3.2.1-ololo
Игнорируется: /boot/3.4.3-pf-uksm
Игнорируется: /boot/3.2.1-r2-pf
Будут удалены следующие файлы:
/boot/3.1.5-pf
/boot/3.1.5-pf1
/boot/3.1.6-pf
/boot/3.2.1-pf
/boot/3.2.4-pf
/boot/3.2.7-pf
/boot/3.3.2-pf
/boot/3.3.6-pf
/boot/3.4.3-pf
/boot/3.4.5-pf-uksm
Будут удалены следующие диры:
/usr/src/linux-2.2.2-ololo
/usr/src/linux-3.3.6-pf
/lib/modules/3.2.1-trololo
попробуй на всякий случай