Nginx日志切割脚本

发布时间:2024年01月24日
#!/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`按照配置文件中的设置处理所有日志文件。

文章来源:https://blog.csdn.net/weixin_45623111/article/details/135815668
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。