如何捕获最新的内核版本grub.conf
(如果默认=0)?
例如文件中的最新内核是2.6.18-409.el5
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/rootvg/slash
# initrd /initrd-version.img
#boot=/dev/cciss/c0d0
default=0
timeout=5
#splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-409.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-409.el5 ro root=/dev/rootvg/slash
initrd /initrd-2.6.18-409.el5.img
我试过这个:
grep kernel /etc/grub.conf | grep -v "#" |sed s'/-/ /' | head -1 | awk '{print $3}'
2.6.18-409.el5
但我觉得这种方法不可靠并且不能处理某些情况。
仅从“grub.conf”获取最新内核的正确方法是什么?
答案1
该方法特定于 grub 版本,请注意,对于 grub 2+,thenkernel
已替换为linux
,因此该方法考虑了这一点
awk '/\/vmlinuz{kernel[$2]}
END{
asorti(kernel);
latest=kernel[length(kernel)];
print "Latest kernel : ",gensub(/\/vmlinuz-([[:digit:].-]*[[:digit:]]).*$/,"\\1","1",latest)}
' /boot/grub/grub.cfg
样本输出
Latest kernel : 3.13.0-86
笔记:需要[ gnu-awk ]
答案2
grep title /etc/grub.conf | awk '{print $7}' | tr -d "()"