IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> nginx自动日志切割方法 -> 正文阅读

[系统运维]nginx自动日志切割方法

引用链接:https://www.cnblogs.com/comprehensive/p/12856097.html
背景说明

nginx运行的太久,日志就会越来越大,有必要对他进行日志切割,而nginx的日志文件有两个:

access.log 记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;
error.log 记录服务器错误的日志

linux kill -usr1 和kii -HUP的作用

kill -USR1亦通常被用来告知应用程序重载配置文件;例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。
kill -HUP pid 或者 killall -HUP pName:
其中pid是进程标识,pName是进程的名称
如果想要更改配置而不需停止并重新启动服务,可以使用上面两个命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。
根据约定,当你发送一个挂起信号(信号1或HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。

一、利用脚本日志切割(按天进行日志切割)
以下脚本任选一个就行;

A.编写脚本

#!/bin/bash
year=`date +%Y`
month=`date +%m`
day=`date +%d`
logs_backup_path="/usr/local/nginx/logs_backup/$year$month"               #日志存储路径

logs_path="/usr/local/nginx/logs/"                                        #要切割的日志路径
logs_access="access"                                                      #要切割的日志
logs_error="error"
pid_path="/usr/local/nginx/logs/nginx.pid"                                 #nginx的pid

[ -d $logs_backup_path ]||mkdir -p $logs_backup_path
rq=`date +%Y%m%d`
#mv ${logs_path}${logs_access}.log ${logs_backup_path}/${logs_access}_${rq}.log
mv ${logs_path}${logs_error}.log ${logs_backup_path}/${logs_error}_${rq}.log
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
B.编写脚本

#! /bin/bash
## 假设nginx的日志存放路径为/data/logs/
d=`date -d "-1 day" +%Y%m%d`   生成昨天的日期
logdir="/data/logs"   定义存放位置
nginx_pid="/usr/local/nginx/logs/nginx.pid" 定义位置,找他的pid
cd $logdir 进入目录下
for log in `ls *.log`  做个for循环
do    
   mv $log $log-$d   做一个改名操作
done
/bin/kill -HUP `cat $nginx_pid`  重新加载一下,生成新的日志文件

设置定时任务

# crontab –e
59 23 * * * bash /usr/local/nginx/cut_ngnix_log.sh   #每天23:59分开始执行;

** 二、利用logrotate管理日志**
(1)默认centos系统安装自带logrotate,软件包信息说明;

# rpm -ql  logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf  # 主配置文件
/etc/logrotate.d   # 配置目录

(2)使用Logrorate切割日志

# vim /etc/logrotate.d/nginx 
/var/log/nginx/*.log     #此处为nginx存储日志的地方,日志根据实际路径填写;
 {
    daily                    #指定转储周期为每天
    rotate 30                #转储次数,超过将会删除最老的那一个
    missingok                #如果日志文件丢失,不要显示错误
    compress                 #通过gzip 压缩转储以后的日志
    delaycompress            #当前转储的日志文件到下一次转储时才压缩
    notifempty               #当日志文件为空时,不进行轮转
    postrotate               #执行的指令
      if [ -f /var/run/nginx/nginx.pid ]; then
          kill -USR1 `cat /var/run/nginx/nginx.pid`
      fi
endscript                   #PID路径根据实际路径填写;
}

(3)保存好配置文件后,测试效果:

# logrotate -vf /etc/logrotate.d/nginx 
access.log  access.log.1  error.log  error.log.1

(4)定时任务执行

#crontab –e
0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #每天凌晨00:00自动执行日志切割任务;

扩展链接,如有侵权,请联删
1.nginx日志切割方法
2.linux kill usr1的作用

微信公众号:
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:52:22  更:2021-08-31 15:52:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:01:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码