nginx学习(六):日志切割

现有的日志都会存在 access.log 文件中,但是随着时间的推移,这个文件的内容会越来越多,体积会越来越大,不便于运维人员查看,所以我们可以通过把这个大的日志文件切割为多份不同的小文件作为日志,切割规则可以以天为单位,如果每天有几百G或者几个T的日志的话,则可以按需以每半天或者每小时对日志切割一下。

手动切割

1.创建一个shell可执行文件:cut_my_log.sh,内容为:

#!/bin/bash
LOG_PATH="/var/log/nginx/"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log

#向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 `cat $PID`

2.赋予可执行的权限

chmod +x cut_my_log.sh

3.执行并测试

./cut_my_log.sh

4.结果真是

[[email protected] nginx]# ll
total 136
-rw-r--r-- 1 root   root 77587 Dec 22 15:08 access.2019-12-21+15:16.log
-rw-r--r-- 1 nobody root     0 Dec 22 15:16 access.log
-rw-r--r-- 1 root   root 51279 Dec 22 14:58 error.2019-12-21+15:16.log
-rw-r--r-- 1 nobody root     0 Dec 22 15:16 error.log

定时

1.安装定时任务:

yum install crontabs

2.crontab -e 编辑并且添加一行新的任务:


*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh

3.重启定时任务:

service crond restart

4.附:常用定时任务命令:

service crond start         //启动服务
service crond stop          //关闭服务
service crond restart       //重启服务
service crond reload        //重新载入配置
crontab -e                  // 编辑任务
crontab -l                  // 查看任务列表

5.查看效果

[[email protected] nginx]# ll
total 148
-rw-r--r-- 1 root   root 77587 Dec 22 15:08 access.2019-12-21+15:16.log
-rw-r--r-- 1 nobody root   500 Dec 22 15:31 access.2019-12-21+15:34.log
-rw-r--r-- 1 nobody root     0 Dec 22 15:34 access.2019-12-21+15:35.log
-rw-r--r-- 1 nobody root     0 Dec 22 15:35 access.2019-12-21+15:36.log
-rw-r--r-- 1 nobody root   128 Dec 22 15:36 access.log
-rw-r--r-- 1 root   root 51279 Dec 22 14:58 error.2019-12-21+15:16.log
-rw-r--r-- 1 nobody root     0 Dec 22 15:16 error.2019-12-21+15:34.log
-rw-r--r-- 1 nobody root     0 Dec 22 15:34 error.2019-12-21+15:35.log
-rw-r--r-- 1 nobody root     0 Dec 22 15:35 error.2019-12-21+15:36.log
-rw-r--r-- 1 nobody root   269 Dec 22 15:36 error.log

原文地址:https://www.cnblogs.com/zhenghengbin/p/12079960.html

时间: 2024-10-07 22:16:41

nginx学习(六):日志切割的相关文章

05 nginx定时任务完成日志切割

一:nginx日志切割 (1) 新建一个data目录 [[email protected] nginx]# mkdir /data (2) 新建一个shell脚本 [[email protected] data]# vi runlog.sh (3) 编写shell脚本 #需要切割日志文件的路径 LOGPATH=/usr/local/nginx/logs/access.log #根据月份创建一个目录 BASEPATH=/data/$(date -d yesterday +%y%m) mkdir -

nginx之自动日志切割--请注意这里不是脚本

之前安装 nginx 都是自己编译安装,然后打成 rpm 包.换了一个新公司之后,发现服务器的 nginx 都是 yum 安装的,这也没什么问题,业务量不大. 之后我发现在 nginx 的日志存储目录下,日志都被切割了,这很正常,但是经过我查看,在 crontab 下面并没有脚本文件进行 nginx 的日志切割,这 使我有点摸不到头脑,以我之前的观念都是脚本进行日志切割,然后放到定时任务中按天执行. 之后搜索了网上的文章,找到了切割 nginx的日志是一个服务执行的 服务名: logrotate

WebGoat教程学习(六)--日志欺骗(Log Spoofing)

The grey area below represents what is going to be logged in the web server's log file.* Your goal is to make it like a username "admin" has succeeded into logging in.* Elevate your attack by adding a script to the log file. 灰色框框的部分是日志输出部分,日志的记录

nginx学习六 高级数据结构之双向链表ngx_queue_t

1 ngx_queue_t简介 ngx_queue_t是nginx提供的一个轻量级的双向链表容器,它不负责存储数据,既不提供数据的内存分配,它只有两个指针负责把数据链入链表,它跟stl提供的queue不同,stl提供的queue帮助用户存储数据,用户只需要相容器里添加数据即可,而ngx_queue_t,用户必须自己提供存储数据的内存,并且必须定义一种数据结构把ngx_queue_t包含在其中,然后利用ngx_queue_t提供的函数来进行相应的操作. 2 ngx_queue_t结构及其操作 2.

Nginx学习(六)ngx_lua_waf模块

http://blog.chinaunix.net/uid-1728743-id-3546152.html https://github.com/loveshell/ngx_lua_waf

linux shell:nginx日志切割脚本

需求原因:nginx不具备日志切割功能,日志量较大,方便分析. 实现目的:完成nginx日志切割,并根据时间命名 简要命令: mv /usr/local/tengine/logs/access.log /usr/local/tengine/logs/access-date.log kill -USER1 Nginx主进程号. 解释: 通过mv命令重命名日志,并且通过kill -USER1 nginx-id的命令,告诉nginx需要写新的日志, 不然nginx不会在mv之后继续写日志. 我们可以通

Nginx日志切割,无缝升级

概述: nginx中有两种比较常用的日志文件,访问日志access.log和错误日志error.log,访问日志记录了客户端访问服务器的输出信息,错误日志记录了本地localhost的故障信息.因此合理的管理日志文件对运维人员的工作不言而喻,以下是摘自互联网的脚本,来学习参考已经试验过,可以投入生产环境使用 日志文件切割 由于 Nginx 的日志都是写在一个文件当中的,因此,我们需要每天零点将前一天的日志存为另外一个文件,这里我们就将 Nginx 位于 logs 目录中的 access.log

nginx日志切割脚本,python实现

# 自搭建了个人博客 有需要交流学习的可以访问 www.wpython.com #!/usr/bin/env python   import datetime,os,sys,shutil   log_path = '/alidata/log/nginx/access/' log_file = 'www.wpython.com.log'   yesterday = (datetime.datetime.now() - datetime.timedelta(days = 1))   try:    

nginx日志切割脚本,自动上传到日志服务器

nginx日志切割脚本,自动上传到日志服务器 1 nginx是yum方式安装,系统会自动生成nginx日志切割计划任务在/etc/logrotate.d/nginx下,把自动生成的计划任务删除,自己编写切割脚本,并传到统一存放日志的服务器上.  www.ahlinux.com 2 安装ncftp包,用于日志传输时使用. 3 简单切割脚本如下: #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH yesterday=`date +%