您的位置:首页 > 运维架构 > Nginx

nginx 定时分割日志

2014-09-18 17:07 309 查看
nginx  是没有自动分割日志的,所以就需要自己实现日志分割

原   站点所有日志都放在一个目录里(文件名即站点名)

分割方式:每个站点一个目录,每天生成一个日志文件,根据文件名称生成目录

呆狐狸.凨

1.lanmps_cut_log.sh  shell文件

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin:~/bin
export PATH
# Check if user is root
if [ $UID != 0 ]; then echo "Error: You must be root to run the install script, please use root to install lanmps";exit;fi
#日志目录
IN_WEB_LOG_DIR="/www/wwwLogs"
YESTERDAY=`date -d "yesterday" +%Y-%m-%d`
[ ! -d $IN_WEB_LOG_DIR/logs ] && mkdir $IN_WEB_LOG_DIR/logs

for filename in `ls $IN_WEB_LOG_DIR`
do
if [ -f $IN_WEB_LOG_DIR/$filename ] ; then
#echo $IN_WEB_LOG_DIR/$filename
#echo $IN_WEB_LOG_DIR/logs/${filename%.log}/${YESTERDAY}.log
tmpPath=$IN_WEB_LOG_DIR/logs/${filename%.log}
[ ! -d $tmpPath ] && mkdir $tmpPath
mv $IN_WEB_LOG_DIR/$filename $tmpPath/${YESTERDAY}.log
rm -rf $IN_WEB_LOG_DIR/$filename
fi
done

#nginx  pid 文件位置
kill -USR1 `cat /www/lanmps/nginx/logs/nginx.pid`
保存位置 例如:/root/lanmps_cut_log.sh

2.定时任务

#在 每天凌晨00:01运行
1 0 * * * /root/lanmps_cut_log.sh

3.设置

3.1  crontab命令

功能说明:设置计时器。

语  法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]

补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:

Minute Hour Day Month DayOFWeek Command

参  数:

-e  编辑该用户的计时器设置。

-l  列出该用户的计时器设置。

-r  删除该用户的计时器设置。

-u<用户名称>  指定要设定计时器的用户名称。

3.2  crontab 格式

基本格式 :

* *  *  *  *  command

分 时 日 月 周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示

第2列表示小时1~23(0表示0点)

第3列表示日期1~31

第4列 表示月份1~12

第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

3.3 案例

首先,输入

crontab -e然后输入
1 0 * * * /root/lanmps_cut_log.sh完成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx shell linux