您的位置:首页 > 其它

如何使log文件达到指定大小就转储(logrotate)

2012-11-13 15:01 260 查看

[code]Linux logrotate 问题:如何使Log文件一达到指定大小就转储

这个问题用crond做不了,因为他的检测间隔就是一分钟,你如果想在两次cron执行的间隔中,log文件的大小达到或超过指定大小就自动转的话,就需要自己写一个脚本,使用sleep这个程序,让她在指定的时间内执行,你可以指定为1秒执行一次logrotate或者其他时间间隔
[/code]


追问

你好,脚本方面能不能说得再详细些呢?感谢!!



回答

比如可以这样:
vi /root/auto_logrotate.sh
#!/bin/bash
while [ $a -z ];
do
sleep 1;
logrotate  /xxx/xxx.conf;      //这里的/xxx/xxx.conf是你要监控的那个进程的logrotate配置文件。
done
然后chmod u+x /root/auto_logrotate.sh
然后放在后台运行:/root/auto_logrotate.sh&
然后在:echo "/root/auto_logrotate.sh&" >>/etc/rc.local
这样子就会每隔一秒执行一次logrotate,如果log文件符合你的logrotate的配置文件条件的话,就会自动备份。



追问

频繁的执行貌似Logrotate不太好,因为Logrotate时需要重启rsyslog服务,这期间就会有Log无法输出。最好能监控文件大小,文件到达指定大小后再执行Logrotate。



回答

#!/bin/bash
while [ $a -z ];
do
sleep 1;
size=`ll /var/log/messages | cut -d " " -f 5`
if [ $size -ge xxxxx ];
then
logrotate  /xxx/xxx.conf;
fi
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: