vlambda博客
学习文章列表

nginx的日志的切割

 每种挫折或不利的突变,是带着同样或较大的有利的种子




    现在nginx的日志都是存在access.log中的但随着时间的推移,这个文件将会越来越大,不利于运维人员维护,所以我们可以将这个大文件切割成小文件,切割规则可以按天为单位,如果每天的日志过多。可以按照每小时来切割。

    具体方式如下:



01



手动切割日志




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

#!/bin/bashLOG_PATH="/usr/local/nginx/logs/"RECORD_TIME=$(date -d 'yesterday' + '%Y-%m-%d+%H:%M')PID=/usr/local/nginx/logs/nginx.pidmv ${LOG_PATH}/access.log  ${LOG_PATH}/access.${RECORD_TIME}.logmv ${LOG_PATH}/error.log  ${LOG_PATH}/error.${RECORD_TIME}.log
# 向nginx主进程发送你好,用于重新打开日志文件kill -USR1 `cat $PID`

2. 为cut_my_log.sh添加可执行的权限

chmod +x cut_my_log.sh

3. 测试

./cut_my_log.sh

效果如下:


02





自动切割日志



要是嫌手动切割太麻烦,其实做到定时切割,其实原理很简单,Linux上有一个定任务的东西可以做到。这里设置为每分钟切割一下。

  1.  安装定时任务

yum install cronie

2. 查看任务列表

crontab -l

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

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

4. 重启定时任务

service crond restart


附:常用定时任务命令:

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

效果如下:



总结:对于类似的日志切割和备份都可以如此做,比如mysql的日志备份等等,方便我们排错和日志归纳。你学废了吗?