最近使用nginx做负载均衡器,日志文件比较多,因此做一个日志切割脚本,临时用用。
一、脚本切割日志
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash # Author:Byrd # Version:0.1 # Site:note.t4x.org # Contact:root#t4x.org # Define dir and file Log_Path=/usr/local/nginx/logs Yesterday=$(date -d "yesterday" +%Y-%m-%d) if [ -f "${Log_Path}/access.log" ]; then mv ${Log_Path}/access.log ${Log_Path}/access_${Yesterday}.log kill -USR1 `cat /var/run/nginx.pid` else exit 1 fi |
将上面的脚本加入定时任务即可。
脚本的一些说明:SourceByrd's Weblog-https://note.t4x.org/code/nginx-cut-log/
USR1亦通常被用来告知应用程序重载配置文件;例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。
kill -HUP pid 或者 killall -HUP pName:
其中pid是进程标识,pName是进程的名称
如果想要更改配置而不需停止并重新启动服务,可以使用上面两个命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。
根据约定,当你发送一个挂起信号(信号1或HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。 SourceByrd's Weblog-https://note.t4x.org/code/nginx-cut-log/
二、工具切割日志
nginx日志切割:【必须先启动cronolog,然后启动nginx】
0 1 2 3 |
$ mkfifo /usr/local/nginx/logs/access_log_pipe #建立管道 $ cat /usr/local/nginx/logs/access_log_pipe | /usr/local/cronolog/sbin/cronolog /usr/local/nginx/logs/access_%Y%m%d.log & #天 $ cat /usr/local/nginx/logs/access_log_pipe | /usr/local/cronolog/sbin/cronolog /usr/local/nginx/logs/access_%Y%m%d%H.log & #小时 $ cat /usr/local/nginx/logs/access_log_pipe | /usr/local/cronolog/sbin/cronolog /usr/local/nginx/logs/access_%Y%m%d%H%M.log & #分钟 |
nginx日志代码:
0 1 2 3 4 |
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access_log_pipe main; |
参考文档:
1:https://typecodes.com/cseries/unixsigtermkill.html
2:http://www.xuebuyuan.com/323422.html
3:http://linoxide.com/linux-command/linux-killall-my-options/SourceByrd's Weblog-https://note.t4x.org/code/nginx-cut-log/ SourceByrd's Weblog-https://note.t4x.org/code/nginx-cut-log/
申明:除非注明Byrd's Blog内容均为原创,未经许可禁止转载!详情请阅读版权申明!