该脚本会自动切割/home/wwwlogs/目录下所有的log文件 #!/bin/bash #自动版日志切割 无需设置 #set the path to nginx log files log_files_path="/home/wwwlogs/" log_files_dir=${log_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m") #set the path to nginx. nginx_sbin="/usr/local/nginx/sbin/nginx" #Set how long you want to save save_days=30 ############################################ #Please do not modify the following script # ############################################ mkdir -p $log_files_dir cd $log_files_path #cut nginx log files for d in `ls -f *.log`;do mv ${log_files_path}${d} ${log_files_dir}/$(date -d "yesterday" +"%Y%m%d")_$d done #delete 30 days ago nginx log files find $log_files_path -mtime +$save_days -exec rm -rf {} \; $nginx_sbin -s reload 按天分类存储并删除超过7天的日志 脚本内容: #!/bin/bash # a nginx access log segmentation shell script cd /data/wslogs log_dir="/data/wslogs" time=`date +%Y%m%d` nginx_dir="/usr/local/webserver/nginx" #日志分割,按天分类 website=`ls $log_dir/access* | xargs -n 1 | cut -f 2 -d "."` for i in $website do mkdir -p $log_dir/backup/$time/$i mv $log_dir/access.$i.log $log_dir/backup/$time/$i/$time.log done $nginx_dir/sbin/nginx -s reload #删除所有超过7天日志。 if [ "`date +%a`" = "Sun" ]; then all_list=`ls $log_dir/backup | xargs -n 1` for del in $all_list do let results=$time-$del if [ $results -gt 7 ]; then rm -fr $log_dir/backup/$del fi done fi 需要注意的是:因为个人需要,Nginx访问日志命名格式必须是access.域名.log,例如:access.www_1987_com.log,域名中原来的点.必须换成其他字符,比如下划线_ 代码中的一些位置参数可以根据自己需要修改,修改/etc/crontab文件,加入00 00 * * * root /data/logcron.sh,每天零点执行。 方法三,我们可以不用脚本可以使用简单的配置 1. 定义日志轮滚策略 # vim nginx-log-rotate view sourceprint? /data/weblogs/*.log { nocompress daily copytruncate create notifempty rotate 7 olddir /data/weblogs/old_log missingok dateext postrotate /bin/kill -HUP `cat /var/run/nginx.pid 2> /dev/null` 2> /dev/null || true endscript } [warning]/data/weblogs/*.log使用通配符时,/data/weblogs/目录下的所有匹配到的日志文件都将切割。如果要切割特定日志文件,就指定到该文件。[/warning] 2. 设置计划任务 # vim /etc/crontab 59 23 * * * root ( /usr/sbin/logrotate -f /PATH/TO/nginx-log-rotate) 这样每天23点59分钟执行日志切割。 (责任编辑:IT) |