转载自:http://www.iteblog.com/archives/1244
默认情况下,nginx将每天网站访问的日志都写在一个文件里面,随着时间的推移,这个文件势必越来越大,最终成为问题。不过我们可以写个脚本来自动地按天(或者小时)切割日志,并压缩(节约磁盘空间)。
脚本的内容如下:
|
03
|
logspath="/alidata/log/Nginx/access/"
|
|
04
|
yesterday=`date -d '-1 day' +%Y%m%d`
|
|
05
|
mv ${logspath}www.iteblog.com.access.log ${logspath}www.iteblog.com.access$yesterday.log
|
|
06
|
mv ${logspath}www.iteblog.com.error.log ${logspath}www.iteblog.com.error$yesterday.log
|
|
07
|
gzip ${logspath}www.iteblog.com.access$yesterday.log
|
|
08
|
gzip ${logspath}www.iteblog.com.error$yesterday.log
|
|
10
|
kill -USR1 `cat /alidata/server/Nginx/logs/Nginx.pid`
|
上面的程序是一个bash脚本。logspath是我网站日志存放的决定路径;yesterday是昨天的时间,格式是%Y%m%d;首先将当前nginx服务器正在写的日志移到带日期的文件中,然后调用gzip分别对access以及error日志进行压缩,压缩完的格式为gz。
这里需要注意的是,mv完日志之后,一定需要调用kill -USR1 `cat /alidata/server/nginx/logs/nginx.pid`,否则mv之后网站的日志将不会写入到${logspath}www.iteblog.com.access.log文件中。
这个脚本可以放到一个目录下面,这里假设放到了我home目录下/home/iteblog,名称是mvlogs.sh。我们需要定时的调用这个脚本才能切日志,可以利用Linux自带的定时功能crontab -e进行设置,内容如下:
|
1
|
00 00 * * * /bin/sh /home/iteblog/mvlogs.sh
|
crontab配置计划任务的书写格式
分钟 小时 日 月 周 [用户名] 命令
说明:
第一个参数定义的是:分钟,表示每个小时的第几分钟来执行。范围是从0-59
第二个参数定义的是:小时,表示从第几个小时来执行,范围是从0-23
第三个参数定义的是:日期,表示从每个月的第几天执行,范围从1-31
第四个参数定义的是:月,表示每年的第几个月来执行,范围从1-12
第五个参数定义的是:周,表示每周的第几天执行,范围从0-6,其中 0表示星期日。
每六个参数定义的是:用户名,也就是执行程序要通过哪个用户来执行,这个一般可以省略;
第七个参数定义的是:执行的命令和参数。
设置完成之后,这个脚本就会在每天的00:00进行切日志操作。下面是我网站切除日志的格式
|
1
|
[root@iteblog access]# ll
|
|
3
|
-rw-r--r-- 1 www root 203120 Jan 2 00:00 www.iteblog.com.access20150101.log.gz
|
|
4
|
-rw-r--r-- 1 www www 202423 Jan 2 23:59 www.iteblog.com.access20150102.log.gz
|
|
5
|
-rw-r--r-- 1 www www 33593 Jan 3 00:12 www.iteblog.com.access.log
|
|
6
|
-rw-r--r-- 1 www root 3533 Jan 1 23:52 www.iteblog.com.error20150101.log.gz
|
|
7
|
-rw-r--r-- 1 www root 2494 Jan 2 23:44 www.iteblog.com.error20150102.log.gz
|
|
8
|
-rw-r--r-- 1 www root 0 Jan 3 00:00 www.iteblog.com.error.log
|
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22569416/viewspace-1874710/
,如需转载,请注明出处,否则将追究法律责任。