nginx中使用shell脚本每天定时切割日志

Nginx不支持像Apache 一样使用cronolog来轮转日志,但是可以采用以下方式来实现日志文件的切割:
mv /data1/logs/access.log /data1/logs/20111030.log
kill -USR1 Nginx主进程号

通过mv命令将日志文件重命名为/data1/logs/20111030.log,然后发送kill -USR1信号给Nginx的主进程号,让Nginx

重新生成一个新的日志文件/data1/logs/access.log。

如果想每天定时切割日志,还须要借助crontab。我们可以写一个按天切割的日志,按年、月
份目录存放日志的shell脚本:

 

 代码如下 复制代码

#!/bin/bash
# This script run at 04:00

# The Nginx logs path
logs_path="/home/www/data/logs/"

mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%

m")/access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/servers/nginx/nginx.pid`

赋予可执行权限:

执行命令crontab -e进入编辑状态

 代码如下 复制代码

00 04 * * * /root/cut_logs.sh

这样就每天凌晨4点你的系统就会自动切割nginx日志了哦。

如果你想更换其它时间的话我们可以修改00 04 * * * /root/cut_logs.sh 这一句,如改成每天的00:00切割nginx访

问日志

crontab -e

输入以下内容:

 代码如下 复制代码

00 00 * * * /bin/bash  /usr/local/nginx/sbin/cut_nginx_log.sh

即可了,只要修改前面的数字就行了。

时间: 2024-11-08 16:49:02

nginx中使用shell脚本每天定时切割日志的相关文章

rc local-在 rc.local 中添加shell脚本开机启动后,如果需要用到数据库,会报错,怎么解决

问题描述 在 rc.local 中添加shell脚本开机启动后,如果需要用到数据库,会报错,怎么解决 会出现这样的报错,感觉是数据库还没启动完. OperationalError: (2006, 'MySQL server has gone away') 但是已经加了非常长的延时,还是不行,开机后自己手动启动的话就不会出现在这个问题,怎么解决 解决方案 你需要放在数据库启动之后.不然你的脚本启动的时候,数据库还没有启动 解决方案二: 你明白出错的原因啊,放在数据库启动完了之后在执行这个脚本就OK

php管理nginx虚拟主机shell脚本实例_php技巧

本文实例讲述了php管理nginx虚拟主机shell脚本,分享给大家供大家参考.具体分析如下: 使用php作为shell脚本是一件很方便的事情.理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考: 复制代码 代码如下: #!/usr/bin/php -q <?php   start: fwrite(STDOUT,"===========Vhost Script===========\n"); fwrite(STDOUT,"=

linux中利用Shell脚本自动提交网站404死链到搜索引擎

  Shell脚本 说做就做,简单的写了个 Shell 脚本就搞定了! 脚本名称:网站死链生成脚本 脚本功能:每天定时分析网站前一天的 nginx 日志, 然后提取状态码为404并且UA为百度蜘蛛的抓取路径,并写入到网站根目录下的 death.txt 文件,用于提交百度死链. 脚本代码: #!/bin/bash #Desc: Death Chain File Script #Author: ZhangGe #Blog: http://你的域名/5038.html #Date: 2015-05-0

Git学习--&amp;gt;如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器?

一.背景 在我之前的博客 git学习--> Gitlab如何进行备份恢复与迁移? (地址:http://blog.csdn.net/ouyang_peng/article/details/77070977) 里面已经写清楚了如何使用Gitlab自动备份功能. 但是之前的备份功能只是备份到Gitlab服务运行的那台服务器上,如果哪一天那台服务器的磁盘损坏了的话,数据无法取出,那么对于公司来说是一匹无法想象的损失,因为 代码是公司的重要资产,需要以防万一. 代码是公司的重要资产,需要以防万一. 代码

linux中的shell脚本管理(二)

在Shell脚本中执行使用if语句的好处是:可以根据特定的条件(eg:判断备份目录是否存在)来决定是否执行某项操作,当满足不同的条件时执行不同的操作(eg:备份目录不存在则创建该目录,否则跳过操作).该文将分别从条件测试操作,if语句结构,应用示例这三个方面讲解if语句在Shell脚本中的应用. 1.条件测试操作: 需要在Shell脚本中有选择性地执行任务时,首先面临的问题就是,如何设置命令执行的条件? 在Shell环境中,可以根据命令执行后返回状态值来判断该命令是否成功执行,当返回值为0是表示

Centos中使用Shell脚本一键安装LNMP环境

由于Nginx是一款高性能的HTTP和反向代理服务器.Nginx在反向代理,Rewrite规则,稳定性,静态文件处理,内存消耗等方面表现了很强的优势.因此公司线上和测试环境的WEB服务大多数采用的是LNMP环境,经常要进行LNMP环境的搭建,下面是用SHELL脚本写的一键安装LNMP环境的脚本. 1)系统环境介绍 Centos 5.8 64位 (已测试) Nginx: nginx-1.4.1.tar.gz PHP:   php-5.3.27.tar.gz Mysql: mysql-5.6.5-m

php管理nginx虚拟主机shell脚本

  使用php作为shell脚本是一件很方便的事情.理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考  代码如下   #!/usr/bin/php -q <?php   start: fwrite(STDOUT,"===========Vhost Script===========\n"); fwrite(STDOUT,"= Choose an operation \n"); fwrite(STDOUT,"

如何在Linux中启用Shell脚本的调试模式

脚本是存储在一个文件的一系列命令.在终端上输入一个个命令,按顺序执行的方法太弱了,使用脚本,系统中的用户可以在一个文件中存储所有命令,反复调用该文件多次重新执行命令. 在学习脚本或写脚本的初期阶段,我们通常从写小脚本或者几行命令的短脚本开始,调试这样的脚本时我们通常无非就是通过观察它们的输出来确保其正常工作. 然而,当我们开始写非常长或上千行命令的高级脚本,例如改变系统设置的脚本,在网络上执行关键备份 等等,我们会意识到仅仅看脚本输出是不足以在脚本中找到 Bug 的! 因此,在 Linux 系列

linux c程序中获取shell脚本输出的实现方法_C 语言

1. 前言Unix界有一句名言:"一行shell脚本胜过万行C程序",虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作.比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令.但是,system函数仅返回命令是否执行成功,而我们可能需要获得shell命令在控制台上输出的结果.例如,执行外部命令ping后,如果执行失败,我们希望得到p