Enterprise Infrastructure Intelligence ● Certified engineers online · Fast response guaranteed
리눅스/OS

Logrotate 엔진: 리눅스 로그 파일 자동 관리의 작동 원리

Logrotate는 로그 파일의 자동 순환, 압축, 삭제를 관리하는 리눅스 표준 유틸리티로, 상태 파일 기반 잠금 메커니즘과 시간 기반 또는 용량 기반 회전 트리거를 통해 다중 프로세스 환경에서 안전하게 동작합니다. Create와 Copytruncate 두 가지 회전 전략을 지원하며, 각각 서로 다른 애플리케이션 특성에 대응합니다.

2026.10.08  ·  6회  · 

Logrotate 엔진의 핵심 아키텍처

Logrotate는 설정 파일 기반 구성 시스템으로 운영되며, 기본적으로 크론 작업(일 1회) 또는 systemd.timer를 통해 정기적으로 실행됩니다. 엔진은 /etc/logrotate.conf(전역 설정) 및 /etc/logrotate.d/ 디렉터리(애플리케이션별 설정)에서 정책을 읽어 적용합니다. 동시 실행 방지를 위해 /var/lib/logrotate.status 상태 파일에 대한 파일 잠금을 획득하며, 잠금 획득 실패 시 종료 코드 3으로 진입하여 다중 logrotate 프로세스 간의 경합을 방지합니다.

회전 트리거 메커니즘

Logrotate는 두 가지 독립적 회전 조건을 지원합니다. 시간 기반 회전은 일간(daily), 주간(weekly), 월간(monthly) 등의 빈도로 지정되며, 마지막 회전 이후 경과 시간이 조건을 만족할 때 작동합니다. 용량 기반 회전은 size 지시자를 통해 파일 크기 임계값(예: 100M)을 초과할 때 즉시 트리거됩니다. Minsize는 시간과 크기 조건을 결합하여(예: 일간이지만 최소 50MB 초과 시), maxsize는 스케줄을 무시하고 크기 도달 시 즉시 회전하게 합니다.

회전 전략: Create vs. Copytruncate

Create(기본값)는 활성 로그 파일을 다시 명명(예: myapp.log → myapp.log.1)하고 원본 이름의 새로운 빈 파일을 생성합니다. 애플리케이션이 SIGHUP 신호로 파일을 다시 열 수 있어야 하며, 로그 손실이 최소화됩니다. Copytruncate는 로그 파일을 복사한 후 원본을 제자리에서 제로로 초기화하므로 애플리케이션이 파일 디스크립터를 통해 계속 쓸 수 있습니다. 다만 복사와 절단 사이의 미소 시간 윈도에서 데이터 손실 가능성이 있어, 신호 처리 불가능한 레거시 애플리케이션에만 권장됩니다.

실무 운영 주의사항

상태 파일 잠금은 병렬 실행 방지의 핵심이며, --skip-state-lock 또는 --wait-for-state-lock 옵션으로만 이를 우회할 수 있습니다. Postrotate 스크립트는 회전 후 애플리케이션 리로드(예: kill -HUP, systemctl reload)를 담당하며, sharedscripts 지시자로 와일드카드 패턴 매칭 시 스크립트 중복 실행을 방지할 수 있습니다. 네트워크 스토리지(NFS) 환경에서는 파일 이름 변경 원자성 보장 불가로 인해 copy나 copytruncate 옵션 필수이며, Delaycompress를 활용하면 최근 회전 파일의 압축을 차기 순환까지 연기하여 긴급 분석 시 접근성을 확보할 수 있습니다.

참고 출처: Linux man-pages
WIKIDATA WORKSTATION
AI·렌더링에 최적화된
전문가용 워크스테이션
NVIDIA RTX GPU · 최대 192GB 메모리 · ECC 지원