Rain WikiWindows · Linux · Android

logrotate

서비스대부분의 Linux 배포판

logrotate는 로그 파일이 디스크를 채우지 않도록 회전, 압축, 삭제하는 Linux 유틸리티입니다. 대개 systemd 타이머나 cron 작업에 의해 하루에 한 번 실행되며, /etc/logrotate.conf와 /etc/logrotate.d/의 패키지별 규칙을 읽어 들입니다.

1일반적인 규칙

규칙에는 하나 이상의 로그 파일과 함께 daily 또는 weekly(주기), rotate 7(보관할 이전 파일 개수), compress(이전 파일 gzip 압축), missingok(파일이 없어도 오류 없음), notifempty(빈 로그 건너뛰기), 그리고 postrotate ... endscript(회전 후 실행할 명령어, 예: 로그 다시 열기) 등의 지시어가 포함됩니다.

2copytruncate

일부 프로그램은 계속 열려 있는 동일한 파일에 쓰기를 수행합니다. copytruncate는 파일을 이동하는 대신 로그를 복사한 다음 원본을 잘라내어(truncate) 프로그램이 파일 핸들을 유지하도록 합니다. 다만 복사 중에 작성된 몇 줄의 로그는 손실될 수 있습니다.

3테스트

logrotate -d /etc/logrotate.conf는 디버그 모드로 실행되어 수행될 작업만 출력합니다. -f는 회전 주기가 되지 않았더라도 강제로 회전을 수행합니다.

규칙 추가 및 테스트 방법

  1. /etc/logrotate.d/myapp을 생성하여 로그 경로와 weekly, rotate 4, compress, missingok, notifempty 등의 지시어를 작성합니다.
  2. 모의 실행: sudo logrotate -d /etc/logrotate.d/myapp
  3. 출력 결과가 올바라 보이면 강제로 회전을 실행합니다: sudo logrotate -f /etc/logrotate.d/myapp
  4. 결과 확인: 로그 디렉토리에서 ls -l을 실행합니다.

주의 사항

  • 잘못된 경로 패턴은 다른 프로그램의 로그를 회전시키거나 삭제할 수 있습니다.
  • systemd 저널이 관리하는 로그는 logrotate가 아니라 journald.conf에서 제한됩니다.

출처

  1. logrotate(8) man7.org
  2. logrotate(8) (Debian) manpages.debian.org

최종 검토: