<pre name="code" class="html">随后配置logrotate的配置文件/etc/logrotate.conf,加入下面的内容: /var/log/ipwall/messages.log { #日志路径一定要和rsyslog定义的日志文件路径一致 rotate 65535 #滚动65535次 create 0777 syslog adm #设置权限,方便windows连接samba服务器 compress #采用压缩 size 50M #文件大小50M以上的分割日志 dateext dateformat .%s #定义文件切割后的文件名,必须配合dateext使用 postrotate /bin/kill -HUP $(/bin/cat /var/run/rsyslogd.pid 2>/dev/null) &>/dev/null endscript } 在这里一定要加posrotate/endscript这段脚本,这样可以使rsyslog程序重新读取配置文件,这样做的作用是让rsyslog程序释放对messages.log文件持有的文件描述符,否则即使日志文件被分割后,rsyslog也不会向新产生的日志文件写数据。 经测试还是这种方法好: v-test-app01:/root/sbin# cat logrotate.sh . ~/.bash_profile /usr/sbin/logrotate -f /etc/logrotate.conf kill -9 `ps -ef | grep rsyslogd | grep -v grep | awk '{print $2}'` rm -rf /var/run/rsyslogd.pid rsyslogd -f /etc/rsyslog.conf v-test-app01:/root/sbin# cat /etc/logrotate. cat: /etc/logrotate.: No such file or directory v-test-app01:/root/sbin# cat /etc/logrotate.conf /usr/local/apache-tomcat-7.0.55_8082/logs/catalina.out { #rotate 7 表示保留7天的备份文件 rotate 1 #daily 表示每天整理一次 daily #copytruncate 表示先复制log文件的内容,然后再清空 copytruncate #compress 表示压缩备分文件 compress #如果是空文件的话,不转储 notifempty #如果指定的目录不存在,logrotate会报错,此项用来关闭报错 missingok }