正文
我们每天凌晨00:00:01把昨天的日志重命名,放在特定的目录下,再USR1信息号控制nginx重新生成新的日志文件
在目录/usr/local/nginx/logs/下新建shell脚本runlog.sh
注:以下代码中的文件位置均可自行更改
# 定义sh解释器 #!/bin/bush # 定义要分割的日志的存储位置 LOGPATH=/usr/local/nginx/logs/access.log # 定义分割后的日志的存储位置,$(date -d yesterday +%Y%m):名为年份+月份的目录 BASEPATH=/usr/local/nginx/logs/$(date -d yesterday +%Y%m) # 递归创建以BASEPATH为名的目录 mkdir -p $BASHPATH # 将字符串……赋值给bak bak=$BASEPATH/$(date -d yesterday +%d)_access_log # 将$LOGPATH更名为$bak mv $LOGPATH $bak # 创建$LOGPATH文件 touch $LOGPATH # 控制Nginx重新生成日志文件 kill -USR1 `/usr/local/nginx/logs/nginx.pid`
然后使用crontab命令编辑定时任务
crontab -e• 1
在打开的编辑窗口输入
01 00 * * * sh /usr/local/nginx/logs/runlog.sh
crontab文件的含义:
# 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: # minute hour day month week command # 分 时 日 月 周 命令 # 每项设置的解释 minute 表示分钟,可以是从0到59之间的任何整数。 hour 表示小时,可以是从0到23之间的任何整数。 day 表示日期,可以是从1到31之间的任何整数。 month 表示月份,可以是从1到12之间的任何整数。 week 表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 command 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。它的
这时,即设置好了Nginx的定时日志切割存储,每天的凌晨00:00:01把昨天的日志切割存储起来。