Nginx日志切割脚本

#!/bin/bash
#function:cut nginx log files
 
#set the path to nginx log files
log_files_path="/app/servers/nginx/logs/"
log_files_dir=${log_files_path}
 
#set nginx log files you want to cut
log_files_name=(access )
 
#set the path to nginx.
nginx_sbin="/app/servers/nginx/sbin/nginx"
 
#Set how long you want to save
save_days=90
############################################
#Please do not modify the following script #
############################################
#mkdir -p $log_files_dir
log_files_num=${#log_files_name[@]}
 
#cut nginx log files
for((i=0;i<$log_files_num;i++));do
    mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}${log_files_name[i]}.log_$(date -d "yesterday" +"%Y-%m-%d")
done
 
#delete 90 days ago nginx log files
find $log_files_path -mtime +$save_days -exec rm -rf {} \; 
 
#restart nginx
sudo $nginx_sbin -s reload

使用`logrotate`按月切割Nginx日志并删除6个月前的日志,请按照以下步骤操作:
 
1. 首先,创建一个用于日志切割和删除的配置文件。在`/etc/logrotate.d`目录中创建一个名为`nginx`的文件,并添加以下内容:

/path/to/nginx/logs/*.log {
    daily 
    rotate 12 
    compress 
    delaycompress 
    missingok 
    notifempty 
}

请将`/path/to/nginx/logs`替换为您的Nginx日志文件夹路径。
 
2. 然后,编辑`/etc/logrotate.conf`文件,将以下行添加到文件末尾:

# Delete logs older than 6 months 
/var/log/nginx/*.log.*.gz {
    missingok 
    notifempty 
    delete 6m 
}

请根据您的实际情况调整日志文件路径。
 
3. 保存并退出文件。现在,`logrotate`将根据配置文件中的设置自动切割和压缩Nginx日志,并删除6个月前的日志。
 

要立即运行`logrotate`,请使用以下命令:

logrotate -f /etc/logrotate.conf 

这将强制`logrotate`按照配置文件中的设置处理所有日志文件。

你可能感兴趣的:(前端,服务器,linux)