linux logrotate

27013 단어 linuxlog
Linux 로그 파일 총괄 - logrotate
2014-10-30 23:07   댓 글: 5 모음 집 공유: 10    
다음 에서 컴 파일:http://xmodulo.com/2014/09/logrotate-manage-log-files-linux.html 저자: Sarmed Rahman 오리지널: LCTThttps://linux.cn/article-4126-1.html 번역자: GOLinux 본문 주소:https://linux.cn/article-4126-1.html
로그 파일 은 시스템 에서 발생 하 는 사건 에 대한 유용 한 정 보 를 포함 하고 있 으 며, 장벽 을 제거 하 는 과정 이나 시스템 성능 분석 에 자주 사용 된다.바 쁜 서버 에 대해 서 는 로그 파일 크기 가 빠르게 증가 하고 서버 가 디스크 공간 을 빨리 소모 하 는 것 이 문제 다.그 밖 에 하나의 거대 로그 파일 을 처리 하 는 것 도 종종 까다 로 운 일이 다.
logrotate 는 로그 파일 을 자동 으로 차단 하거나 압축 하거나 삭제 할 수 있 는 유용 한 도구 입 니 다.예 를 들 어 logrotate 를 설정 하여 / var / log / foo 로그 파일 을 30 일 마다 돌아 가면 서 6 개 월 이 넘 는 로 그 를 삭제 할 수 있 습 니 다.설정 이 끝 난 후, logrotate 의 운영 은 완전히 자동화 되 었 으 며, 더 이상 관여 할 필요 가 없습니다.또한, 오래된 로 그 는 이메일 로 보 낼 수 있 지만, 이 옵션 은 본 튜 토리 얼 의 토론 범 위 를 초과 합 니 다.
주류 Linux 발행 판 에는 기본적으로 logrotate 패키지 가 설치 되 어 있 습 니 다. 어떤 이유 로 logrotate 가 나타 나 지 않 았 다 면 apt - get 이나 yum 명령 으로 설치 할 수 있 습 니 다.
Debian 이나 Ubuntu 에서:

  
  
  
  
  1. # apt-get install logrotate cron

Fedora, CentOS 또는 RHEL 에서:

  
  
  
  
  1. # yum install logrotate crontabs

logrotate 의 설정 파일 은 / etc / logrotate. conf 로 수정 할 필요 가 없습니다.로그 파일 의 순환 은 독립 된 설정 파일 에 설정 되 어 있 습 니 다. / etc / logrotate. d / 디 렉 터 리 에 놓 여 있 습 니 다.
예시 1
첫 번 째 사례 에서 10MB 로그 파일 / var / log / log - file 을 만 들 것 입 니 다.로그 파일 을 관리 하기 위해 logrotate 를 사용 하 는 방법 을 보 여 줍 니 다.
로그 파일 을 만 드 는 것 부터 시작 해서 10MB 의 무 작위 비트 스 트림 데 이 터 를 입력 합 니 다.

  
  
  
  
  1. # touch /var/log/log-file
  2. # head -c 10M < /dev/urandom > /var/log/log-file

현재 로그 파일 이 준비 되 어 있 기 때문에 로그 파일 을 따라 로그 rotate 를 설정 할 것 입 니 다.이 파일 에 프로필 을 만 듭 니 다.

  
  
  
  
  1. # vim /etc/logrotate.d/log-file

  
  
  
  
  1. /var/log/log-file {
  2. monthly
  3. rotate 5
  4. compress
  5. delaycompress
  6. missingok
  7. notifempty
  8. create 644 root root
  9. postrotate
  10. /usr/bin/killall -HUP rsyslogd
  11. endscript
  12. }

여기:
  • monthly: 로그 파일 은 매달 돌아 갑 니 다.다른 사용 가능 한 값 은 'daily', 'weekly' 또는 'yearly' 입 니 다.
  • rotate 5: 한 번 에 5 개의 압축 파일 로 그 를 저장 합 니 다.여섯 번 째 압축 파일 에 대해 서 는 가장 오래된 압축 파일 이 삭 제 됩 니 다.
  • copress: 순환 작업 이 완 료 된 후에 순환 되 어 있 는 압축 파일 은 gzip 로 압축 합 니 다.
  • delaycopress: 항상 copress 옵션 과 함께 사용 합 니 다. delaycopress 옵션 은 logrotate 에 게 최근 압축 파일 을 압축 하지 말 라 고 지시 합 니 다. 압축 은 다음 라운드 에서 주기 적 으로 진 행 됩 니 다.이것 은 당신 이나 어떤 소프트웨어 가 최신 압축 파일 을 읽 어야 할 때 유용 합 니 다.
  • missingok: 로그 가 돌아 가 는 동안 '파일 을 찾 을 수 없습니다' 와 같은 오 류 는 무 시 됩 니 다.
  • notifempty: 로그 파일 이 비어 있 으 면 순환 이 진행 되 지 않 습 니 다.
  • create 644 root: 지정 한 권한 으로 새로운 로그 파일 을 만 들 고 logrotate 도 원본 로그 파일 의 이름 을 바 꿉 니 다.
  • post rotate / endscript: 모든 다른 명령 이 완료 되면 post rotate 와 endscript 에서 지정 한 명령 이 실 행 됩 니 다.이 경우 rsyslogd 프로 세 스 는 즉시 설정 을 다시 읽 고 계속 실 행 됩 니 다.

  • 위의 템 플 릿 은 통용 되 고 설정 파 라미 터 는 당신 의 요구 에 따라 조정 되 며 모든 파라미터 가 필요 한 것 은 아 닙 니 다.
    샘플 2
    이 예 에서 우 리 는 로그 파일 을 한 번 에 따라 가 려 고 하지만 로그 파일 크기 는 50MB 로 늘 릴 수 있 습 니 다.
    
      
      
      
      
    1. # vim /etc/logrotate.d/log-file
    
      
      
      
      
    1. /var/log/log-file {
    2. size=50M
    3. rotate 5
    4. create 644 root root
    5. postrotate
    6. /usr/bin/killall -HUP rsyslogd
    7. endscript
    8. }

    샘플 3
    오래된 로그 파일 을 만 든 날짜 로 이름 을 짓 고 싶 습 니 다. dateext 상 숙 을 추가 하여 구현 할 수 있 습 니 다.
    
      
      
      
      
    1. # vim /etc/logrotate.d/log-file
    
      
      
      
      
    1. /var/log/log-file {
    2. monthly
    3. rotate 5
    4. dateext
    5. create 644 root root
    6. postrotate
    7. /usr/bin/killall -HUP rsyslogd
    8. endscript
    9. }

    압축 파일 이름 에 날짜 정 보 를 포함 하도록 합 니 다.
    장애물 을 제거 하 다
    로그 rotate 가 설정 한 장벽 알림 을 제공 합 니 다.
    1. logrotate 를 수 동 으로 실행
    logrotate 는 명령 행 에서 언제든지 수 동 으로 호출 할 수 있 습 니 다.
    / etc / lograte. d / 로 설정 한 모든 로그 호출 logrotate:
    
      
      
      
      
    1. # logrotate /etc/logrotate.conf

    특정한 설정 을 위해 logrotate 를 호출 하려 면:
    
      
      
      
      
    1. # logrotate /etc/logrotate.d/log-file

    2. 연습
    장벽 을 제거 하 는 과정 에서 가장 좋 은 선택 은 '- d' 옵션 을 사용 하여 logrotate 를 예행연습 방식 으로 실행 하 는 것 이다.인증 을 하려 면 실제 로그 파일 을 따라 가지 않 고 연습 로그 바퀴 를 따라 출력 을 표시 할 수 있 습 니 다.
    
      
      
      
      
    1. # logrotate -d /etc/logrotate.d/log-file

    우리 가 위의 출력 결 과 를 통 해 알 수 있 듯 이 logrotate 는 이 순환 이 불필요 하 다 고 판단 합 니 다.만약 파일 의 시간 이 하루 보다 작다 면, 이것 은 발생 할 것 이다.
    3. 강제 순환
    순환 조건 이 만족 하지 않 더 라 도 '- f' 옵션 을 사용 하여 logrotate 순환 로그 파일 을 강제 할 수 있 습 니 다. '- v' 매개 변 수 는 상세 한 출력 을 제공 합 니 다.
    
      
      
      
      
    1. # logrotate -vf /etc/logrotate.d/log-file
    
      
      
      
      
    1. reading config file /etc/logrotate.d/log-file
    2. reading config info for /var/log/log-file
    3.  
    4. Handling 1 logs
    5.  
    6. rotating pattern: /var/log/log-file forced from command line (5 rotations)
    7. empty log files are rotated, old logs are removed
    8. considering log /var/log/log-file
    9. log needs rotating
    10. rotating log /var/log/log-file, log->rotateCount is 5
    11. dateext suffix '-20140916'
    12. glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
    13. renaming /var/log/log-file.5.gz to /var/log/log-file.6.gz (rotatecount 5, logstart 1, i 5),
    14. old log /var/log/log-file.5.gz does not exist
    15. renaming /var/log/log-file.4.gz to /var/log/log-file.5.gz (rotatecount 5, logstart 1, i 4),
    16. old log /var/log/log-file.4.gz does not exist
    17. . . .
    18. renaming /var/log/log-file.0.gz to /var/log/log-file.1.gz (rotatecount 5, logstart 1, i 0),
    19. old log /var/log/log-file.0.gz does not exist
    20. log /var/log/log-file.6.gz doesn't exist -- won't try to dispose of it
    21. renaming /var/log/log-file to /var/log/log-file.1
    22. creating new /var/log/log-file mode = 0644 uid = 0 gid = 0
    23. running postrotate script
    24. compressing log with: /bin/gzip

    4. Logrotate 의 기록 로그
    logrotate 자체 로 그 는 보통 / var / lib / logrotate / status 디 렉 터 리 에 저 장 됩 니 다.만약 배 리 케 이 드 목적 에 있다 면, 우 리 는 logrotate 를 지정 한 파일 에 기록 하고 싶 습 니 다. 우 리 는 아래 와 같이 명령 행 에서 지정 할 수 있 습 니 다.
    
      
      
      
      
    1. # logrotate -vf s /var/log/logrotate-status /etc/logrotate.d/log-file

    5. Logrotate 정시 작업
    logrotate 에 필요 한 cron 작업 은 설치 할 때 자동 으로 생 성 되 어야 합 니 다. 저 는 cron 파일 의 내용 을 붙 여 참고 하도록 하 겠 습 니 다.
    
      
      
      
      
    1. # cat /etc/cron.daily/logrotate
    
      
      
      
      
    1. #!/bin/sh
    2.  
    3. # Clean non existent log file entries from status file
    4. cd /var/lib/logrotate
    5. test -e status || touch status
    6. head -1 status > status.clean
    7. sed 's/"//g' status | while read logfile date
    8. do
    9. [ -e "$logfile" ] && echo "\"$logfile\" $date"
    10. done >> status.clean
    11. mv status.clean status
    12.  
    13. test -x /usr/sbin/logrotate || exit 0
    14. /usr/sbin/logrotate /etc/logrotate.conf

    작은 매듭 을 짓 자 면, logrotate 도 구 는 방대 한 로그 파일 로 인해 저장 공간 이 소모 되 는 것 을 방지 하 는 데 매우 유용 하 다.설정 이 완료 되면 프로 세 스 가 자동 으로 진행 되 며, 인위적인 관여 없 이 장시간 실 행 될 수 있 습 니 다.본 튜 토리 얼 은 logrotate 를 사용 하 는 몇 가지 기본 적 인 사례 에 중심 을 두 고 있 으 며, 당신 도 그것 을 맞 춰 서 당신 의 수 요 를 만족 시 킬 수 있 습 니 다.
    본문 이 너 에 게 도움 이 되 기 를 바란다.

    좋은 웹페이지 즐겨찾기