nginx日志切割脚本
#!/bin/bash
# utf-8
# description: nginx滚动切割脚本,按照500M进行滚动切割
# ---------------------------------------------------------------------
log_directory="/export/servers/nginx/logs" # 日志文件目录
max_size=500 # 日志文件的最大大小,单位为MB
log_array=("access.log" "error.log") # 要操作的日志集合
pid_file="/export/servers/nginx/run/nginx.pid" # nginx的PID
# ---------------------------------------------------------------------
count=0
# 日志滚动归档
logrotate() {
local log_file="$1"
local log_path="${log_directory}/${log_file}"
if [[ ! -f "$log_path" ]]; then
return
fi
local current_size=$(stat -c %s "$log_path")
# 判断当前日志文件大小是否超过最大大小
if ((current_size > max_size * 1024 * 1024)); then
local log_file_prefix="${log_file%.*}"
# 创建一个新的日志文件名,格式为access_YYYYMMDD_HHMMSS.log
local new_log_file="${log_file_prefix}.$(date +%Y%m%d_%H%M%S).log"
# 重命名当前日志文件
mv -f "$log_path" "${log_directory}/${new_log_file}"
# 重新启动nginx,使其生成新的日志文件
((count++))
fi
}
# 重新生成日志文件写入
generate_log_file() {
if ((count > 0)); then
/bin/kill -USR1 "$(cat "$pid_file")" 2>/dev/null
fi
}
# 删除历史日志
delete_history_log() {
find "$log_directory" -mtime +5 -type f -exec rm -f {} \;
}
# 主函数
main() {
for log in "${log_array[@]}"; do
logrotate "$log"
done
generate_log_file
delete_history_log
}
main
原创:做时间的朋友
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2020-12-18 guava cache 缓存