요구 사항
nginx 로그는 계속해서 늘어나므로 관리를 용이하게 하려면 로그를 직접 잘라야 합니다.
분석
우리 모두 알고 있듯이 Linux 시스템의 모든 것은 파일이므로 각 프로세스에는 자체 파일 설명자가 있고 nginx 프로세스는 자체 파일 설명자를 nginx.pid에 씁니다. nginx를 사용하여 새 로그 파일을 다시 엽니다(로그 파일의 구성 세부 정보는 여기에서 찾을 수 있습니다. 간단히 말해서 로그에 기록되는 내용입니다.) 따라서 다음 명령이 필요합니다:
kill -USR1 `cat ${pid_path}`
이 명령의 의미는 다음과 같습니다. 먼저 정수인 nginx의 pid에 대해 cat을 수행한 다음 USR1 신호를 이 프로세스에 보냅니다. nginx 프로세스가 이 신호를 받은 후 구성에 따라 새 신호를 다시 엽니다. .log 파일을 작성하고 로그를 작성합니다.
구현
스크립트 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>
crontab에 추가:
(매일 자정에 자동 실행)
<code>crontab -e <span>0</span><span>0</span> * * * /path/<span>to</span>/<span>script</span></code>
로그 자동 자르기 및 정리 문제가 해결되었습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.
').addClass('사전 번호 매기기').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });위 내용은 Linux 콘텐츠를 포함한 Linux 서버의 로그 자동 잘라내기와 정리에 대해 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.