Requirements
Since nginx logs will continue to grow, we need to cut the logs ourselves to facilitate management. We need to achieve the following results:
Analysis
As we all know, everything under the Linux system is a file, so each process has its own file descriptor, and the nginx process writes its own file descriptor into nginx.pid. We need to tell nginx, Let it reopen a new log file (the configuration details of the log file can be seen here. Simply put, it is what the log records.) So we need this command:
kill -USR1 `cat ${pid_path}`
The meaning of this instruction is: first cat to the pid of nginx, which is an integer, and then send the signal USR1 to this process. After the nginx process receives this signal, it will reopen a new log file according to the configuration, and Log writing.
implementation
script cut_nginx_log.sh:
<code><span>#!/bin/bash</span> log_path=/path/to/nginx/ pid_path=/path/to/nginx.pid <span>#清理掉指定日期前的日志</span> DAYS=<span>30</span><span>#生成昨天的日志文件</span> mv <span>${log_path}</span>access.log <span>${log_path}</span>access_$(date <span>-d</span><span>"yesterday"</span> +<span>"%Y%m%d"</span>).log mv <span>${log_path}</span>error.log <span>${log_path}</span>error_$(date <span>-d</span><span>"yesterday"</span> +<span>"%Y%m%d"</span>).log kill -USR1 `cat <span>${pid_path}</span>` <span>#文件夹大小</span> size=du -m <span>-s</span><span>${log_path}</span><span>if</span> [size <span>-gt</span><span>1000</span>];<span>then</span> find <span>${logs_path}</span> -name <span>"access_*"</span> -type f -mtime +<span>$DAYS</span> -exec rm {} \; find <span>${logs_path}</span> -name <span>"error_*"</span> -type f -mtime +<span>$DAYS</span> -exec rm {} \; <span>fi</span></code>
added to crontab:
(Automatically executed at midnight every day)
<code>crontab -e <span>0</span><span>0</span> * * * /path/<span>to</span>/<span>script</span></code>
This has solved the problem of automatically cutting and cleaning logs. If you have any questions, please feel free to ask.
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });The above introduces the automatic cutting and cleaning of logs on Linux servers, including Linux content. I hope it will be helpful to friends who are interested in PHP tutorials.