切割 Nginx 日志

目录

方式一:自定义脚本 

方式二:logrotate

crontab 讲解

centos 容器安装 crontab

centos 容器 systemctl 命令执行异常 


 

切割理由:假设一个网站访问量特别大,每天 access_log 文件有 2 个 G,如果想从文件中查找一下信息,光打开就很慢了,做日志切割的话,便于维护。

需求描述:每分钟一个文件放入到相应的文件夹中。任务会每分钟读取对应路径下的日志文件,然后分析入库。

日志文件格式需为:nginxLogFilePath/YYYYMM/DD/HH/mm.log。

例子:/var/log/nginx/201904/18/20/28.log。

方式一:自定义脚本 

1. 编写脚本 

#这里是每分钟切割一次日志的shell脚本
#!/bin/bash
base_path='/var/log/nginx' #定义log基本路径变量
mm=$(date -d "1 minute ago" +"%M" ) #分钟定义(格式为:05)
modify_file_name="$mm.log" #修改的log文件名
HH=$(date -d today +"%H" ) #小时定义(格式为:02)
dd=$(date -d today +"%d" ) #日期定义(格式为:06)
YYYYMM=$(date -d today +"%Y%m" ) #年月定义(格式为:202408)
YYYYMM_folder="$base_path/$YYYYMM"; #年月的文件夹
YYYYMM_DD_folder="$base_path/$YYYYMM/$dd"; #年月日的文件夹
YYYYMM_DD_HH_folder="$base_path/$YYYYMM/$dd/$HH"; #年月日时的文件夹
#如果年月的文件夹不存在,则重新创建一个
if [ ! -d "$YYYYMM_folder" ];
then
  mkdir $YYYYMM_folder
fi
if [ ! -d "$YYYYMM_DD_folder" ];
then
  mkdir $YYYYMM_DD_folder
fi
if [ ! -d "$YYYYMM_DD_HH_folder" ];
then
  mkdir $YYYYMM_DD_HH_folder
fi
mv $base_path/access.log $YYYYMM_DD_HH_folder/$modify_file_name #修改名字
kill -USR1 `cat /run/nginx.pid` #平滑关闭nginx,方便日志切割

注释:在 Docker CentOS 容器中,‌nginx 的 PID 文件通常位于 /var/run/nginx.pid。‌

        这个文件的位置是基于 Linux 系统的标准目录结构。‌/var/run 目录用于存储系统启动以来的实时数据,‌包括进程标识(‌PID)‌文件。‌按照命名惯例,‌每个服务都有自己的 PID 文件,‌并且命名规则为 <program-name>.pid。‌因此,‌nginx 服务的 PID 文件名为 /var/run/nginx.pid,‌其中存放的是 nginx master 进程的进程号。‌这个文件对于 nginx 服务的正常运行至关重要,‌因为它允许系统或其他服务跟踪 nginx 的进程状态。‌

        如果在 CentOS 容器中遇到 nginx 服务相关的问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chengbo_eva

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

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

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

打赏作者

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

抵扣说明:

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

余额充值