本文主要是介绍nginx日志切割脚本 —— 筑梦之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#!/bin/bash # 定义Nginx日志目录
LOG_DIR=/www/server/nginx/logs # 获取上一天的时间,格式为YYYY-MM-DD
YESTERDAY_TIME=$(date -d "yesterday" +%F) # 归档日志的目录,按月创建,如2023-10
LOG_MONTH_DIR=$LOG_DIR/$(date +"%Y-%m") # 定义需要切割的日志文件名称列表,这里以access.log为例
LOG_FILE_LIST="access.log" # 循环处理日志文件
for LOG_FILE in $LOG_FILE_LIST; do # 如果归档目录不存在,则创建该目录 [ ! -d $LOG_MONTH_DIR ] && mkdir -p $LOG_MONTH_DIR # 将日志文件移动到归档目录,并在文件名后加上上一天的时间戳 mv $LOG_DIR/$LOG_FILE $LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME}
done # 发送USR1信号给Nginx进程,使其重新打开日志文件
kill -USR1 $(cat $LOG_DIR/nginx.pid)
定义日志目录和需要切割的日志文件:脚本首先定义了Nginx的日志目录
LOG_DIR
和需要切割的日志文件名称列表LOG_FILE_LIST
。在这个例子中,我们只处理了access.log
,但你可以根据需要添加更多的日志文件,如error.log
等。获取上一天的时间:使用
date
命令获取上一天的时间,并格式化为YYYY-MM-DD
的形式,存储在变量YESTERDAY_TIME
中。创建归档日志目录:按月创建归档日志的目录,目录名称为当前年月,如
2023-10
。如果该目录不存在,则使用mkdir -p
命令创建它。切割并归档日志文件:通过循环处理日志文件列表中的每一个文件。对于每个文件,我们将其移动到归档目录,并在文件名后加上上一天的时间戳,以便于区分和管理。
重新打开日志文件:最后,我们通过发送
USR1
信号给Nginx进程来通知其重新打开日志文件。Nginx在接收到USR1
信号后,会关闭当前的日志文件并打开新的日志文件进行记录。这样,我们就可以实现日志文件的自动切割和归档了。
你可以将上述脚本保存为一个
.sh
文件,比如cut_nginx_logs.sh
,并赋予其执行权限(chmod +x cut_nginx_logs.sh
)。然后,你可以通过cron定时任务来定期执行这个脚本,以实现日志的自动切割和归档。此外,你还可以根据需要对脚本进行定制。例如,你可以修改
LOG_DIR
和LOG_FILE_LIST
变量来适应你的实际环境。你也可以修改归档目录的命名规则和日志文件的命名规则,以满足你的特定需求。
这篇关于nginx日志切割脚本 —— 筑梦之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!