nginx日志切割
2017-11-27 17:27
281 查看
shell脚本实现nginx日志切割
1、编写自动分割Nginx日志脚本
#!/bin/bash #Rotate the Nginx logs to prevent a single logfile from consuming too much disk space. #Nginx 日志文件所在的目录 LOGS_PATH=/opt/nginx/logs/nginx #获取昨天的yyyy-MM-dd(2017-11-14) YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) 或获取昨天的yyyyMMdd(20171114) YESTERDAY=$(date -d "yesterday" +%Y%m%d) #保留30天日志 save_days=30 #移动文件 mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log #向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件 kill -USR1 $(cat /opt/nginx/run/nginx/nginx.pid) #delete 30 days ago nginx log files find $LOGS_PATH -mtime +$save_days -exec rm -f {} \;
给脚本加上执行权限
chmod +x /opt/nginx/cut-nginxlog.sh
2、设置Linux定时任务
vi /etc/crontab
使用bash 或sh、root来执行bash shell脚本:
0 0 * * * /bin/sh /opt/nginx/cut-nginxlog.sh > /dev/null 2>&1 0 0 * * * bash /opt/nginx/cut-nginxlog.sh 0 0 * * * root /opt/nginx/cut-nginxlog.sh;
说明:
从command>/dev/null说起
其实这条命令是一个缩写版,对于一个重定向命令,肯定是a > b这种形式,那么command > /dev/null难道是command充当a的角色,/dev/null充当b的角色。这样看起来比较合理,其实一条命令肯定是充当不了a,肯定是command执行产生的输出来充当a,其实就是标准输出stdout。所以command > /dev/null相当于执行了command 1 > /dev/null。执行command产生了标准输出stdout(用1表示),重定向到/dev/null的设备文件中。
2>&1
几个基本符号及其含义
/dev/null 表示空设备文件
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误
有时候希望将错误的信息重新定向到输出,就是将2的结果重定向至1中就有了"2>1"这样的思路,如果按照上面的写法,系统会默认将错误的信息(STDERR)2重定向到一个名字为1的文件中,而非所想的(STDOUT)中。因此需要加&进行区分。就有了 2>&1 这样的用法,这里&相当于等效于标准输出
3、shell定时删除nginx日志
创建dellog.sh文件,路径/opt/nginxvi dellog.sh
#!/bin/sh
find /opt/nginx/logs/nginx/error -mtime +7 -type f -name *.log | xargs rm -f
find /opt/nginx/logs/nginx/access -mtime +7 -type f -name *.log | xargs rm -f
#定期删除七天前的日志文件
有时为了验证脚本执行内容可以打印到test.log查看是否正确的:
0 0 * /opt/nginx/cut-nginxlog.sh > /var/tmp/test.log 2>&1
相关文章推荐
- nginx日志切割
- nginx日志切割shell脚本
- nginx 日志切割
- nginx切割日志
- nginx日志切割脚本
- nginx日志切割代码
- nginx日志切割脚本
- nginx日志文件切割
- Nginx日志文件切割
- Nginx日志按日期切割详解(按天切割)
- Nginx日志管理和切割
- Nginx的日志文件配置与切割
- NGINX按天切割日志
- nginx 日志切割
- 11-5 12 Nginx访问日志 日志切割 静态过期
- 实现对nginx日志切割
- 48.Nginx访问日志 日志切割 静态文件不记录
- nginx 日志切割脚本
- Linux下配置Nginx按天切割日志
- 虚拟主机ip配置,nginx.conf文件配置及日志文件切割