linux 日志清理、压缩脚本

删除90天以前apache日志

find $APACHE_LOG_DIR -mtime +$90-name ”access.log.*” -exec rm {} ;

find $APACHE_LOG_DIR -mtime +$90-name ”error.log.*” -exec rm {} ;

find $APACHE_LOG_DIR -mtime +$90-name ”mod_jk.log.*” -exec rm {} ;

 
定期清理apache日志脚本

清理apache日志脚本

#!/bin/sh

# File date format
DATE=`/bin/date +%y%m%d`
DATE2=` /bin/date  -d"1 day ago"  +%Y-%m-%d`
DATE3=` /bin/date  -d"1 day ago"  +%Y%m%d`
DATE4=` /bin/date  -d"1 day ago"  +%y%m%d`
# Archive period
DAYS=60
HOSTNAME=`hostname -a`
TOMCAT_LOG_DIR=/home/www/logs/tomcat
APACHE_LOG_DIR=/home/www/logs/apache
### Delete old log ###
function delete_old_log {
        find $TOMCAT_LOG_DIR  -mtime +$DAYS -name "catalina.out.*" -exec rm {} \;
        
        find $APACHE_LOG_DIR  -mtime +$DAYS -name "access.log.*" -exec rm {} \;
        find $APACHE_LOG_DIR  -mtime +$DAYS -name "error.log.*" -exec rm {} \;
        find $APACHE_LOG_DIR  -mtime +$DAYS -name "mod_jk.log.*" -exec rm {} \;
}
function compress_log {
	# compress tomcat log files
	if [ -f $TOMCAT_LOG_DIR/catalina.out.$HOSTNAME.$DATE ] ; then
		/bin/nice /usr/bin/gzip -f $TOMCAT_LOG_DIR/catalina.out.$HOSTNAME.$DATE	
	fi
	# compress apache log files
	if [ -f $APACHE_LOG_DIR/access.log.$DATE3 ] ; then
		/bin/nice /usr/bin/gzip -f $APACHE_LOG_DIR/access.log.$DATE3
	fi
	if [ -f $APACHE_LOG_DIR/error.log.$DATE3 ] ; then
		/bin/nice /usr/bin/gzip -f $APACHE_LOG_DIR/error.log.$DATE3
	fi
	if [ -f $APACHE_LOG_DIR/mod_jk.log.$DATE4 ] ; then
		/bin/nice /usr/bin/gzip -f $APACHE_LOG_DIR/mod_jk.log.$DATE4
	fi
	
}

### Rotate catalina log ###
function rotate_catalina_log {
        if [ -f $TOMCAT_LOG_DIR/catalina.out ] ; then
                /bin/nice /bin/cp  $TOMCAT_LOG_DIR/catalina.out $TOMCAT_LOG_DIR/catalina.out.$HOSTNAME.$DATE
                cat /dev/null > $TOMCAT_LOG_DIR/catalina.out
        fi
}


### Main ###
echo "#######start script $0 exec: `date +%Y-%m_%d-%H:%M:%S`#############"
echo "#######start script $0 exec: `date +%Y-%m_%d-%H:%M:%S`#############" >&2
delete_old_log
rotate_catalina_log
compress_log
echo "#######end script $0 exec: `date +%Y-%m-%d_%H:%M:%S`#############"
echo "#######end script $0 exec: `date +%Y-%m-%d_%H:%M:%S`#############" >&2

把上面脚本保存为rotatelogs.sh,添加执行权限。

chmod a+x rotatelogs.sh

crontab 里 添加如下执行计划,每天凌晨1分钟执行一次

1 0 * * * /home/www/scripts/rotatelogs.sh 1>> /home/www/logs/crontab.out.log 2>> /home/www/logs/crontab.err.log

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>