nginx的日志的切割
“ 每种挫折或不利的突变,是带着同样或较大的有利的种子”
现在nginx的日志都是存在access.log中的,但随着时间的推移,这个文件将会越来越大,不利于运维人员维护,所以我们可以将这个大文件切割成小文件,切割规则可以按天为单位,如果每天的日志过多。可以按照每小时来切割。
具体方式如下:
01
—
手动切割日志
1. 创建一个shell可执行文件: cut_my_log.sh , 内容为:
#!/bin/bash
LOG_PATH="/usr/local/nginx/logs/"
RECORD_TIME=$(date -d 'yesterday' + '%Y-%m-%d+%H:%M')
PID=/usr/local/nginx/logs/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${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上有一个定任务的东西可以做到。这里设置为每分钟切割一下。
安装定时任务
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的日志备份等等,方便我们排错和日志归纳。你学废了吗?