发现维护的自己编写linux 系统检查脚本一个bug (syslog\message)
犯了一个低级错误
原存在bug的脚本如下:
chattr -a /var/log/messages
YDATE=`date +%Y%m%d%H%M%S`
mv /var/log/messages /var/log/messages.$YDATE
> /var/log/messages
chattr +i /var/log/messages.$YDATE
chattr +a /var/log/messages
YDATE=`date +%Y%m%d%H%M%S`
mv /var/log/messages /var/log/messages.$YDATE
> /var/log/messages
chattr +i /var/log/messages.$YDATE
chattr +a /var/log/messages
但实际上
上面脚本并不能成功切换message file
Syslogd 仍然打开旧的message file
显示如下
lsof |grep message
---------------------------------------
syslogd 5148 root 1w REG 8,2 5200031 10354750 /var/log/messages.20120707160022
可采用
增加重启syslogd
/usr/bin/killall -HUP syslogd解决(logrotate采用此方式)
或copy 并清空message的方法