>백엔드 개발 >PHP 튜토리얼 >Linux 서버는 로그를 자동으로 자르고 정리합니다. Linux 시스템 Linux를 읽는 방법 Linux 튜토리얼

Linux 서버는 로그를 자동으로 자르고 정리합니다. Linux 시스템 Linux를 읽는 방법 Linux 튜토리얼

WBOY
WBOY원래의
2016-07-29 08:54:141438검색

요구 사항

nginx 로그는 계속해서 늘어나므로 관리를 용이하게 하려면 로그를 직접 잘라야 합니다.

  1. 자동으로 달성해야 합니다. 날짜별로 로그를 자르며 최소 단위는 일입니다.
  2. 로그의 총량이 일정량을 초과하면 로그가 자동으로 직접 삭제되며, 총 로그량은 1000MB를 초과할 수 없습니다.
  3. crontab 예약 작업에 적어주세요.

분석

  1. nginx 로그 디렉터리에는 각각 access.log와 error.log가 있는데, 날짜별로 자동으로 로그를 잘라내려면 일별 로그를 변경해야 합니다. "yyyymmdd_access/error.log" 형식으로 로그를 기록하고 mv를 사용하여 매일 로그 파일 이름을 바꿉니다.
  2. 로그 정리는 간단합니다. 이 폴더의 크기를 확인한 다음 특정 날짜 이전에 로그 파일을 정리하기만 하면 됩니다.
  3. crontab 작업도 비교적 간단하며 자세한 내용은 여기에서 확인할 수 있습니다.
  4. 문제의 핵심은 어제의 로그 파일 이름을 mv로 바꾼 후에도 nginx가 이름이 바뀐 파일(예: access_20160409.log)에 로그를 기록한다는 것입니다. 우리의 목적은 nginx의 이름을 바꾸도록 하는 것입니다. 새 로그 파일을 생성합니다. (access.log)를 작성해 주세요.
  5. 우리 모두 알고 있듯이 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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.