题前:版本升级才是王道呀。
关于redhat5以后版本中boot.log显示为空的问题
作者 hospcuq 出自 httpwww.linuxdiyf.com
前两天主意到自己那台RHEL5下的/var/log/boot.log总是为空的,检查了一下/etc/syslog.conf也没有发现什么错误.发现原来这个记录到boot.log的功能在RHEL5下被裁去了.
继续搜索了一下发现这个问题在Fedora里已经存在挺久了。原因是Redhat决定淘汰对initlog的使用,所以在/etc/init.d/functions中将所有调用initlog的命令给注释起来了.
e.g.
CODE
# Log that something succeeded
success() {
#if [ -z ${IN_INITLOG-} ]; then
# initlog $INITLOG_ARGS -n $0 -s $1 -e 1
#fi
[ $BOOTUP != verbose -a -z ${LSB-} ] && echo_success
return 0
}
我觉得boot.log对于考试中做trouble shooting或是正常运行一个服务器都是比较有用的一个日志,所以没有了是比较不方便的。查了一下,还好/sbin/initlog还在,只是调用它的时候会给出一个Warning告诉你它已经被deprecated了。那么一个简单的恢复就是编辑/etc/init.d/functions文件把这些注释都去掉。重启之后就可以看到boot.log里面记录了在你选择的run level下的daemon的开启和关闭记录了。
但问题是如果只是要判断这些daemon是不是在开机的时候运行了,其实一个简单的ps命令,或者查看一下varlocksubsys下对应的lock 文件就可以了。但是在Redhat决定不用initlog之后把其它daemon自带的init script里所有用到initlog的命令都去除了。比如我对比了一下RHEL4和RHEL5下/etc/init.d/kudzu文件
CODE
#RHEL4
start)
echo -n $Checking for new hardware
rm -f varrunXconfig
rm -f varrunXconfig-failed
# Have a 30 second timeout.
usrsbinkudzu $KUDZU_ARGS -t 30
RETVAL=$
if [ $RETVAL -eq 0 ]; then
action bintrue
else
action binfalse
if [ $RETVAL -eq 5 ]; then
echo -n $Hardware configuration timed out.
echo -n $Run 'usrsbinkudzu' from the command line to re-detect.
initlog -n kudzu -s $Hardware configuration timed out.
initlog -n kudzu -s $Run 'usrsbinkudzu' from the command line to re-detect.
fi
fi
CODE
#RHEL5
start)
echo -n $Checking for hardware changes
rm -f varrunXconfig
rm -f varrunXconfig-failed
# Have a 30 second timeout.
sbinkudzu $KUDZU_ARGS
RETVAL=$
if [ $RETVAL -eq 0 ]; then
action bintrue
else
action binfalse
fi
这样即使去掉了/etc/init.d/functions文件中的注释,那些个额外的启动关闭信息就都不会记录到boot.log中了,里面就只有succeeded, failed了
当然了对于相应的服务查看它自身的日志文件还是最有效的方法。只是觉得boot.log已经提供了一个比较不错的日志,Redhat既然认为initlog 已经过时,但是在没有更新之间不应该直接把它停了。而且从Fedora的情况上看来这个问题已经存在挺久了,希望可以早点出update解决吧