nginx的日志切割-每天定时脚本执行

  1. 日志切割时企业中常规动作,我们不会每天去手工执行一遍命令,通常是让脚本自己执行,于是我们可以将这个动作写进任务计划,每天凌晨自动执行。
#!/usr/bin/bash

s_log="/usr/local/nginx/logs/access.log"
d_log="/root/my_sh/nginx/logs/$(date +%Y-%m-%d_%H-%M-%S).log"
d_log_dir="/root/my_sh/nginx/logs"

# 判断目录是否存在,不存在则创建
if [ ! -d "$d_log_dir" ];then
        mkdir -p "$d_log_dir"
fi

# 判断原始日志文件是否存在,存在则移动并改名
if [ -f "$s_log" ];then
        mv "$s_log" "$d_log"
fi

# 重新打开nginx日志文件-方法1
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
# 方法2
# /usr/local/nginx/sbin/nginx -s reopen

if [ $? -eq 0 ]
then
        echo "$(date +%Y-%m-%d_%H-%M-%S) 日志切割成功" >> "/root/my_sh/nginx/nginx_cut_access.log"
else
        echo "$(date +%Y-%m-%d_%H-%M-%S) 日志切割失败" >> "/root/my_sh/nginx/nginx_cut_error.log"
fi

创建好两个日志切割文件
touch /root/my_sh/nginx/nginx_cut_access.log
touch /root/my_sh/nginx/nginx_cut_error.log

  1. 将脚本添加到定时任务当中去
    执行命令
    crontab -e
    添加定时任务,每天23:59分执行
    59 23 * * * /bin/sh /root/my_sh/nginx/nginx_cut_log.sh

参考文档

posted @ 2022-08-13 18:06  专职  阅读(110)  评论(0编辑  收藏  举报