Nginx教程---03.Nginx日志切割
Nginx的定时任务与自动切割
明确:
如果这个网站的访问量比较大,那么一天下来 nginx日志可能会特别的大,所以当出现这种情况呢,如果
把每天的日志都存在同一个日志文件里,会使你的日志文件大到让你怀疑人生,同时也不好管理。所以就
希望每天在一个固定的时间来产生一个新的文件来存储当天的日志,这样就方便管理了很多。
思路:就是使用 定时任务 + USER1信号量来控制Nginx重新生成新的日志文件
此处需要shell脚本(shell脚本只要记住丫的声明就没啥了),与定时任务的相关知识
linux的date命令:
date:查看当前年月日,但不是格式化的,
date -d yesterday : 查看昨天的年月日 是这样形式的 "Fri Apr 13 00:06:06 PDT 2018"
date -d yesterday +'%Y%m%d' : 格式化的昨天的日期,是这样的:20180413 (人类能看懂了)
date -s '2018-4-14 00:09:00' 然后执行 clock -w 命令:修改linux的系统时间
1 开始实现定时任务
① 在/usr/local/nginx/ 下建data文件夹,用于存储每天产生的日志文件
命令:[root@localhost nginx]# mkdir /data
[root@localhost nginx]# cd /data/
[root@localhost data]# vim runlog.sh //建个runlog.sh文件用于写shell脚本的定时任务
我们先来测试一下,写个简单的shell脚本,返回昨天的年月日

使用命令:sh runlog.sh 来执行脚本,查看返回结果

② 正式编辑runlog.sh文件
#!/bin/bash
LOGPATH=/usr/local/nginx/logs/human.com.access.log //nginx产生的日志
BASEPATH=/data/$(date -d yesterday +%Y%m) //每天产生的日志 按照月份 进行存放
mkdir -p $BASEPATH //创建月份文件夹
bak=$BASEPATH/$(date -d yesterday +%d%H%M).human.com.access.log //将每天产生的日志放在对应的月份下
mv $LOGPATH $bak //将nginx产生的日志 剪切 到bak中
touch $LOGPATH //重新创建 human.com.access.log 日志
kill USER1 'cat /usr/local/nginx/logs/nginx.pid' //重复日志
如图:

③ 使用命令 :crontab -e 创建时钟
*/1 * * * * sh /data/runlog.sh
依次:分 时 日 月 周
如图:

以上日志的定时切割准备完毕,下面开始测试:
回到data目录下: 使用ls命令 查看 出现 201804 这个文件夹

进入 2101804 目录下,每隔一分钟执行一次 ls 命令:

OK!定时的日志切割完成,目前为测试方便,定时为一分钟执行一次日志切割,生产环境中可对 定时器 自行设置!
Nginx教程---03.Nginx日志切割的更多相关文章
- Nginx教程(三) Nginx日志管理
Nginx教程(三) Nginx日志管理 1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某 ...
- Nginx教程(三) Nginx日志管理 (转)
Nginx教程(三) Nginx日志管理 1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某 ...
- Nginx 热部署和日志切割,你学会了吗?
上篇文章,我们已经安装好 Nginx,并且配置好 Nginx 文件后,这个时候我就需要操作 Nginx 的命令行了,这篇文章主要讲解 Nginx 命令行相关知识,并通过日常遇到的热部署.切割日志文件场 ...
- Nginx教程(一) Nginx入门教程
Nginx教程(一) Nginx入门教程 1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.由 ...
- Nginx教程(二) Nginx虚拟主机配置
Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主 ...
- Nginx教程(二) Nginx虚拟主机配置 (转)
Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主 ...
- nginx学习(六):日志切割
现有的日志都会存在 access.log 文件中,但是随着时间的推移,这个文件的内容会越来越多,体积会越来越大,不便于运维人员查看,所以我们可以通过把这个大的日志文件切割为多份不同的小文件作为日志,切 ...
- 【09】Nginx:静态压缩 / 日志切割 / 防盗链 /恶意解析/ 跨域
写在前面的话 上一节我们谈了关于 nginx 服务器的一些简单的安全优化问题,能够帮助我们解决一部分线上服务存在的安全隐患.但是想要提升用户体验这是原因不够的,我们还需要从服务的优化方面入手. 本节更 ...
- Nginx 脚本自动进行日志切割
随着网站的运行时间越来越长,日志文件也会随之越来越大需要对Nginx日志进行切割,下面是每周六晚上自动进行日志切割的shell脚本 脚本如下: [root@jrjs ~]# vim /usr/loca ...
随机推荐
- java.io.UTFDataFormatException: encoded string too long:
java.io.UTFDataFormatException: encoded string too long: 259553 bytes 按如下修改可避开此问题. - output.writeUTF ...
- SetTimer API函数
位于user32.dll中,可以每隔一段时间执行一段时间执行一件事的时候,可以使用它. 使用定时器,通常告诉Windows一个时间间隔,然后Windows以此时间间隔周期性触发程序. 发送WM_TIM ...
- Numpy学习
决定陆陆续续写一些Numpy的例子.. 1. 如果想表示e的x次,就可以这样用,下面直接写一个sigmod函数: def sigmoid(z): return 1 / (1 + np.exp(-z)) ...
- MySQL数据库报错pymysql.err.InterfaceError: (0, '')
今天入库的时候出现了报错pymysql.err.InterfaceError: (0, ''),经过排查,发现是由于把连接数据库的代码放到了插入函数的外部,导致多线程运行出错 def write_in ...
- myEclipse导入现成项目出现错误 【申明来源于网络】
myEclipse导入现成项目出现错误 [申明来源于网络] 原地址:http://blog.sina.com.cn/s/blog_6d7703400100znh6.html file–>impo ...
- jq1.9.0以上版本不兼容live()解决方法
最近一个项目里用bootstrap做图形渲染,需要用到jq1.9以上版本,而copy的js代码里用到了live()方法,故两者产生了兼容问题,下面是解决方案: $('#my').on("cl ...
- MSMQ 跨服务器读写队列的“消息队列系统的访问被拒绝”的解决方案
转自https://www.cnblogs.com/jyz/articles/4612333.html 最近项目中需要跨服务器对消息队列进行读写,开始在单独开发机器上进行Queue的读写没问题.但是部 ...
- C语言中tm结构体
struct tm { int tm_sec; /* Seconds. [0-60] (1 leap second) */ int tm_min; /* Minutes. [0-59] */ int ...
- 011-MAC 设置环境变量path的几种方法
一.概述 首先要知道你使用的Mac OS X是什么样的Shell,使用命令 echo $SHELL 如果输出的是:csh或者是tcsh,那么你用的就是C Shell. 如果输出的是:bash,sh,z ...
- eclipse web module版本问题:Cannot change version of project facet Dynamic Web Module to 2.5.
Description Resource Path Location TypeCannot change version of project facet Dynamic We ...