前两天主意到自己那台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
}[/code]我觉得boot.log对于考试中做trouble shooting或是正常运行一个服务器都是比较有用的一个日志,所以没有了是比较不方便的。查了一下,还好/sbin/initlog还在,只是调用它的时候会给出一个Warning告诉你它已经被deprecated了。那么一个简单的恢复就是编辑/etc/init.d/functions文件把这些注释都去掉。重启之后就可以看到boot.log里面记录了在你选择的run level下的daemon的开启和关闭记录了。
但问题是如果只是要判断这些daemon是不是在开机的时候运行了,其实一个简单的ps命令,或者查看一下/var/lock/subsys下对应的lock 文件就可以了。但是在Redhat决定不用initlog之后把其它daemon自带的init script里所有用到initlog的命令都去除了。比如我对比了一下RHEL4和RHEL5下/etc/init.d/kudzu文件[code]#RHEL4
start)
echo -n $"Checking for new hardware"
rm -f /var/run/Xconfig
rm -f /var/run/Xconfig-failed
# Have a 30 second timeout.
/usr/sbin/kudzu $KUDZU_ARGS -t 30
RETVAL=$?
if [ "$RETVAL" -eq 0 ]; then
action "" /bin/true
else
action "" /bin/false
if [ "$RETVAL" -eq 5 ]; then
echo -n $"Hardware configuration timed out."
echo -n $"Run '/usr/sbin/kudzu' from the command line to re-detect."
initlog -n kudzu -s $"Hardware configuration timed out."
initlog -n kudzu -s $"Run '/usr/sbin/kudzu' from the command line to re-detect."
fi
fi[/code][code]#RHEL5
start)
echo -n $"Checking for hardware changes"
rm -f /var/run/Xconfig
rm -f /var/run/Xconfig-failed
# Have a 30 second timeout.
/sbin/kudzu $KUDZU_ARGS
RETVAL=$?
if [ "$RETVAL" -eq 0 ]; then
action "" /bin/true
else
action "" /bin/false
fi[/code]这样即使去掉了/etc/init.d/functions文件中的注释,那些个额外的启动关闭信息就都不会记录到boot.log中了,里面就只有succeeded, failed了
当然了对于相应的服务查看它自身的日志文件还是最有效的方法。只是觉得boot.log已经提供了一个比较不错的日志,Redhat既然认为initlog已经过时,但是在没有更新之间不应该直接把它停了。而且从Fedora的情况上看来这个问题已经存在挺久了,希望可以早点出update解决吧