Linux下自动分割Nginx日志文件(一)-----自定义脚本和定时任务

简介:

  Nginx 是一个轻量级的 Web 服务器,体积小、性能高、速度快等诸多优点。但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将 导致日志文件容量非常大,不便于管理。当然了,我们也不希望看到这么庞大的一个访问日志文件,那需要手动对这个文件进行切割。偶然发现如果不做切割的话,日志文件会越来越大,达到几十G,而且还影响日志的查询效率,现需要将其进行日志分割。

    在 Linux 平台上进行切割的原理:使用 date 命令以获得昨天的日期、使用 kill 命令向 Nginx 进程发送重新打开日志文件的信号,以及 crontab 设置执行任务周期。

 

1,vi /usr/local/nginx/sbin/cut_log.sh

  脚本为:

1
2
3
4
5
6
7
#!/bin/bash
#date : 2015-11-17
LOGS_PATH= /data/nginx/log
YESTERDAY=$( date  -- date  "yesterday"   + "%Y-%m-%d" )
#PID_PATH="/usr/local/nginx/logs/nginx.pid"
mv  ${LOGS_PATH} /nginx .access.log  ${LOGS_PATH} /access_nginx_ ${YESTERDAY}.log
kill  -USR1 $( cat  /usr/local/nginx/logs/nginx .pid)


代码分析:


## Nginx 日志文件所在的目录,根据个人的情况进行修改
LOGS_PATH=/data/nginx/logs
## 获取昨天的日期
YESTERDAY=$(date --date "yesterday"  +"%Y-%m-%d")
## 移动文件并命名为新的日志文件
mv ${LOGS_PATH}/nginx.access.log  ${LOGS_PATH}/access_nginx_${YESTERDAY}.log
## 向Nginx主进程发送USR1信号,USR1信号是重新打开日志文件
kill -USR1 $(cat /usr/local/nginx/nginx.pid)


##########最简单的备用常用的脚本

1
2
3
4
vim cut_nginx.sh
cd  /data/nginx/logs/access .log  &&\
mv  access.log access_$( date  +%F -d -1day).log
/usr/local/nginx/sbin/nginx  -s reload

crontab -e 

0 0 * * * /bin/bash /usr/local/nginx/sbin/cut-log.sh

1
2
3
4
5
6
7
8
9
10
11
12
####生产:
#! /bin/bash
#Power by guojinbao
date =` date  +%Y-%m-%d-%H-%M-%S`
logfile= "/guojinbao/nginx/logs/access.log"
logdir= /guojinbao/nginx/logs
pid=` cat  /usr/local/nginx/logs/nginx .pid`
if  [ ! -d $logdir ];  then
     mkdir  -p $logdir
fi
/bin/mv  $logfile $logdir /access_ ${ date }.log
kill  -HUP $pid



2,chmod +x /usr/local/nginx/sbin/cut_log.sh

wKioL1ZKwtmDFBnBAAA5bBOiUf8227.png


3,新增定时任务:

[root@zabbix sbin]# crontab -e

0 0 * * * /bin/bash /usr/local/nginx/sbin/cut-log.sh

~                                                      

定时任务是定时到每天的0点0分执行。


4,每天上班的时候就可以查看分割后的日志文件在定制的目录下下。

[root@zabbix log]# ll

total 182456

-rw-r--r--  1 nobody root     37134 Nov 17 11:27 access_nginx.log_2015-11-16.log

-rw-r--r--  1 nobody root    963804 Nov 17 14:05 nginx.access.log



以上就完成了对日志文件的切割。



本文转自 lqbyz 51CTO博客,原文链接:http://blog.51cto.com/liqingbiao/1713451

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
9月前
|
监控 Linux 应用服务中间件
linux查看日志文件tail -f用法
在 Linux 中,查看和监控日志文件是系统管理员和开发者常用的操作之一。tail 命令就是用来查看文件内容的,它默认显示文件的最后部分。tail -f 是 tail 命令的一个非常有用的选项,用于实时查看和跟踪日志文件的更新,尤其是在监控运行中的服务时非常有用。
1140 0
|
应用服务中间件 Linux nginx
【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?Web App Linux 默认使用的 Nginx 版本是由平台预定义的,无法更改这个版本。
360 77
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
399 7
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
549 1
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
436 7
|
Ubuntu 应用服务中间件 Linux
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
310 6
|
运维 应用服务中间件 Shell
Nginx安装与虚拟主机配置shell脚本
Nginx安装与虚拟主机配置shell脚本
191 0
|
应用服务中间件 Linux 网络安全
06_Linux基础-NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本
NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本
514 0
06_Linux基础-NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本
|
应用服务中间件 nginx C语言
Nginx一键安装脚本
!/bin/bash yum -y install wget libtool expat-devel pcre-devel zlib-devel openssl openssl-devel pcre gcc gcc-c++ glibc automake...
1514 0