Nginx日志拆分
系统环境:
CentOS 6.5
1 2 3 4 5 6 7 8 9
| nginx -v
which nginx
locate nginx.pid
|
辅助工具-crontab
crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令
Install
1 2
| yum -y install vixie-cron yum -y install crontabs
|
vixie-cron 软件包是 cron 的主程序;crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
常用命令:
1 2 3 4 5
| service crond start service crond stop service crond restart service crond reload service crond status
|
添加进程为系统服务:
1
| chkconfig --level 345 crond on
|
常用命令:
1 2 3 4 5 6 7 8 9 10 11
| proj-21-032:~ crontab: invalid option -- 'h' crontab: usage error: unrecognized option usage: crontab [-u user] file crontab [-u user] [ -e | -l | -r ] (default operation is replace, per 1003.2) -e (edit user's crontab) -l (list user's crontab) -r (delete user's crontab) -i (prompt before deleting user's crontab) -s (selinux context)
|
crontab -e
进入编辑模式;
准备Nginx日期拆分脚本
1 2 3 4 5 6 7 8 9 10 11 12
|
logs_path="/var/log/nginx/"
pid_path="/var/run/nginx.pid"
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat ${pid_path}`
|
pid_path
通过locate 命令查找,很多版本、安装方式不一致导致位置可能不太一样!
kill -USR1
cat ${pid_path}
命令是为了mv
完成后向nginx发出信号重新打开日志文件并创建一个新的access.log文件用于记录本日的日志… 当时间达到今晚24点后又被mv了,如此循环备份。
将该脚本加入定时任务管理crontab
中。
1 2 3 4 5 6 7 8 9 10 11 12
| crontab -e
*/5 * * * * /usr/sbin/ntpdate 100.65.0.1 >> /dev/null 2>&1 */2 * * * * /bin/bash /etc/titanagent/agent_update_exception.sh >> /var/log/titanagent/check.o.log 2>> /var/log/titanagent/check.e.log */2 * * * * /bin/bash /etc/titanagent/agent_monitor.sh >> /var/log/titanagent/edog.o.log 2>> /var/log/titanagent/edog.e.log 1 * * * * /bin/bash /etc/titanagent/agent_update.sh >> /var/log/titanagent/check.o.log 2>> /var/log/titanagent/check.e.log
00 00 * * * /bin/bash /etc/init.d/nginx_log.sh
|
每天 24点/零点整进行日志拆分.
crontab其它时间日期指令可参考:
http://www.cnblogs.com/longjshz/p/5779215.html