shell+定时任务+nginx信号管理实现日志按日期切割存储

我们每天凌晨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

在打开的编辑窗口输入

01 00 * * * sh /usr/local/nginx/logs/runlog.sh

crontab文件的含义:

# 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

# minute hour day month week command
# 分 时 日 月 周 命令

# 每项设置的解释
minute 表示分钟,可以是从059之间的任何整数。
hour 表示小时,可以是从023之间的任何整数。
day 表示日期,可以是从131之间的任何整数。
month 表示月份,可以是从112之间的任何整数。
week 表示星期几,可以是从07之间的任何整数,这里的07代表星期日。
command 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

这时,即设置好了Nginx的定时日志切割存储,每天的凌晨00:00:01把昨天的日志切割存储起来。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白水baishui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值