Linux下添加shell脚本使得nginx日志每天定时切割压缩
Linux下添加shell脚本使得nginx日志每天定时切割压缩
一 简介
对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大
这时,无论是出现异常时查日志,还是使用“GoAccess”等工具对日志进行分析都将会变得非常麻烦。因此,每天定时对nginx日志进行切割压缩就非常有必要了
二 实现
我的实现思路是每天晚上接近12点时定时执行脚本。其脚本内容就是将当前的nginx日志先按照当天日期进行重命名接着进行压缩,最后是新建空白的nginx日志文件,并重新载入nginx
[root@localhost ~]# cd /usr/local
[root@localhost local]# mkdir scripts
[root@localhost scripts]# vim nginxLog.sh
其内容如下:
#!/bin/sh
cd /usr/local/nginx/logs/
newAccessLog="access`date +%Y-%m-%d`.log"
newErrorLog="error`date +%Y-%m-%d`.log"
mv access.log $newAccessLog
mv error.log $newErrorLog
#创建日志文件
touch access.log error.log
#reload Nginx
/etc/init.d/nginx reload
#压缩日志文件
tar -zcvf $newAccessLog.tar.gz $newAccessLog --remove-files
tar -zcvf $newErrorLog.tar.gz $newErrorLog --remove-files
给脚本添加可执行权限:
[root@localhost scripts]# chmod a+x nginxLog.sh
添加定时任务(每天23:40执行):
[root@localhost scripts]# cd /var/spool/cron/
[root@localhost cron]# echo "40 23 * * * /usr/local/scripts/nginxLog.sh" > root
查看任务:
[root@localhost cron]# crontab -l
这样,第二天就可以看到效果了。最后的效果如下图所示:
wKiom1g7jvTQIhutAAAXVwvG1yI313.png
注:如果有多个nginx日志文件的话可以考虑将我上面的脚本改成更加通用的形式
附:nginx日志定时清理脚本:
[root@localhost scripts]# vim /usr/local/scripts/cleanNginxLog.sh
其内容如下:
#!/bin/sh
cd /usr/local/nginx/logs/
find . -name "*`date -d '-1months' +%Y-%m-%d`*" -type f | xargs -I {} rm -f {}
注:上面脚本的意思是删除当前天之前一个月那天的日志文件
给脚本添加可执行权限:
[root@localhost scripts]# chmod a+x /usr/local/scripts/cleanNginxLog.sh
添加一条定时任务(每天0:30执行):
[root@localhost scripts]# echo "30 0 * * * /usr/local/scripts/cleanNginxLog" >> /var/spool/cron/root
以上部分来自网络博客,本人做了一些总结
Linux下添加shell脚本使得nginx日志每天定时切割压缩的更多相关文章
- shell脚本分析nginx日志
shell脚本分析nginx日志: name=`awk -F ',' '{print $13":"$32}' $file | awk -F ':' '{print $4}'`ech ...
- linux下实现shell脚本自动连接mongodb数据库并创建索引
在linux下创建shell脚本
- 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出
有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...
- linux下利用shell脚本实现添加crontab任务
本来直接用crontab -e 就可以打开vim,输入要执行的任务保存退出就可以添加任务直接启动运行了.但是今天组长说能不能写个shell不用打开vi就能添加到crontab的. 最先想到的是怎么在s ...
- linux下的shell脚本的使用
什么是shell? Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户.这种对话方式可是交互 ...
- shell脚本备份nginx日志
vim /data/runlog.sh #编辑一个 shell 脚本 #!/bin/bash LOGP ...
- windows下建立文件的换行符^M导致linux下的shell脚本执行错误的解决方式
常常在windows下编辑的文件远程传送到linux下的时候每行末尾都会出现^M.这将导致shell脚本执行错误,主要是由于dos下的编辑器和linux下的编辑器对文件末行的回车符处理不一致导致. 主 ...
- linux下的shell脚本(基本)
shell有些命令和格式不用老是容易忘,学而时习之,不亦说乎~ 先说明以下内容来自: http://c.biancheng.net/cpp/shell/ ,C语言中文网,请大家支持原作,点击链接查看. ...
- Linux 下执行Shell 脚本的方式
Shell 脚本的执行方式通常有如下三种: (1)bash script-name 或者 sh script-name:(2)path/script-name或者./script-name:(3)so ...
随机推荐
- CodeForces 662D International Olympiad
写出前几个找规律,然后直接输出. #include<cstdio> #include<cstring> #include<cmath> #include<al ...
- 利用css3特性写出三角形(兼容IE浏览器)
利用CSS写出三角形的效果 效果如图: 代码如下: .triangle-up { width:0px; height:0px; border-left:10px solid transparent; ...
- MulticastSocket绑定端口的问题
该文章由 Binkery 发布于 Binkery技术博客 http://www.binkery.com 如转载请注明出处,该文章的链接地址为 http://www.binkery.com/archiv ...
- find 路径必须在表达式之前
http://sukaka.blog.51cto.com/379985/906008 把*号引起来.
- H3C inode for OSX 10.10 校园网客户端亲测可用
1.打开终端 2.输入以下命令 sudo /library/StartupItems/iNodeAuthService/iNodeAuthService start 3.输入管理密码 4.打开客户端联 ...
- iOS ZBar扫码简单实现
导入ZBarSDK文件并引入一下框架 AVFoundation.framework CoreMedia.framework CoreVideo.framework QuartzCore.framewo ...
- 修改替换/system/framework/framework.jar后重启手机为何没有效果?
自Android 5.0开始android默认使用art(Android4.4开始有实验性质的art),取代原来的Dalvik, art会加载boot.art和boot.oat两个文件(静态编译优化, ...
- 【转】进程间通信方式总结(windows 和linux)
平时看的书很多,了解的也很多,但不喜欢总结,这不昨天面试的时候被问到了进程间通信的方式,因为没有认真总结过,所以昨天答得不是特别好.现在将linux和windows的进程间通信方式好好总结一下. ...
- a标签屏蔽href跳转
原文地址: http://blog.163.com/huang_qy/blog/static/615601452012101411625600/ 推荐的写法: a href="javascr ...
- RabbitMQ消息队列(三):任务分发机制
在上篇文章中,我们解决了从发送端(Producer)向接收端(Consumer)发送“Hello World”的问题.在实际的应用场景中,这是远远不够的.从本篇文章开始,我们将结合更加实际的应用场景来 ...