하나의 로그 회전 검사를 수동으로 실행할 수 있습니까?


541

일정한 간격으로 예약하지 않고 logrotate의 반복을 수동으로 실행할 수 있습니까?


3
logrotate의 문제점은 하나의 글로벌 구성 파일이 있으며 글로벌 구성 파일에 설정된 옵션을 계속 적용하면서 단일 로그 회전 하위 구성 파일을 실행할 수 없다는 것입니다. 즉, 매일 밤 cron에서 실행할 때와 똑같이 하나의 로그 회전 파일 검사를 실행하는 좋은 방법이 없습니다. '이 로그 파일로 제한'옵션을 사용하거나 '전역 구성을 실행하지만이 하위 구성 파일 만 포함'하는 것이 좋습니다.
앤서니

답변:


717

예: logrotate --force $CONFIG_FILE


115
참고 --force가 등 최소 매개 변수, 나이, 같은 지정된 기준에 부합하지 않는 경우에도 파일을 회전합니다
xofer

4
logrotate 구성 파일을 /etc/logrotate.d/custom.conf에 배치하면 로그가 자동으로 회전되는 크기 / 시간을 지정할 필요가 없습니까? 또는 자동으로 회전하지 않으려면 구성을 다른 폴더에 배치해야합니까?
Damainman

18
"notifempty"기준은 "--force"에 의해 무시되지 않습니다. 이것은 잠시 동안 나를 혼란스럽게 만들었으므로 @xofer 문에 대한 예외로 언급했습니다.
thelogix

16
당신은 모든 회전 단지 수 logrotate --force /etc/logrotate.d/(단지 디렉토리 이름)
FCM

1
--force파일이 기준 (나이, 크기 등)을 충족하지 않더라도 회전을 강제 하는 것은 사실 이지만, 이것이 발생 logrotate -d하지 않을 실제 문제를 발견 할 수있는 유일한 방법이라고 생각하십시오 (예 : 서버가 부족한 경우) logrotate로 인해 몇 달 동안 실행되지 않는 공간 ... 그리고 오류 --force가 있음을 알아 File exists
냈기 때문에

559

logrotate -d [your_config_file] 디버그 모드를 호출하여 발생하는 상황에 대한 자세한 설명을 제공하지만 로그 파일은 그대로 둡니다.


81
여기에 와서 "logrotate conf를 어떻게 테스트 할 수 있습니까?"와 같은 질문에 대한 답을 찾고있는 사람들 그것은 단지 conf의 TESTS 등의 답변으로이 일을 할 수
kommradHomer

당신의 접근 방식에 얽매이지 않고, 나는 시도 logrotate --force하고 잘 작동했습니다.
Benyamin Jafari

122

단일 특정 디렉토리 또는 데몬의 로그 파일을 강제 실행하려면 일반적으로에서 구성을 찾을 수 있으며 /etc/logrotate.d독립형으로 작동합니다.

에 지정된 전역 구성 /etc/logrotate.conf은 적용되지 않으므로이 경우 /etc/logrotate.d/[servicename]구성 파일에 원하는 모든 옵션을 구체적으로 지정해야합니다 .

-d어떤 일이 발생하는지 확인하기 위해 시도해 볼 수 있습니다 .

logrotate -df /etc/logrotate.d/nginx

그런 다음 nginx를 예로 사용하여 실행할 수 있습니다.

logrotate -f /etc/logrotate.d/nginx

그리고 nginx 로그 만 회전합니다.


1
이것은 좋고 훌륭하지만 "/etc/logrotate.conf"에있는 전역 설정은 손실됩니다. 전역 및 특정 로그 로테이트 파일을 병합 하고이 문제를 해결하기 위해 사용하는 스크립트를 작성했습니다. (내 답변 참조).
안토니

사용 logrotate -d /etc/logrotate.conf하면 포함 된 다른 conf 파일도 모두 실행됩니다.
wmassingham

61

verbose + force 모드에서 실행할 수 있습니다.

logrotate -vf /etc/logrotate.conf


36

모든 logrotate를 실행하는 방법은 다음과 같습니다.

logrotate -f /etc/logrotate.conf

기본 logrotate 파일을 실행합니다. 여기에는 다른 logrotate 구성도 포함됩니다.


21

지정된 logrotate를 실행하는 방법으로 다음 명령을 실행하십시오.

logrotate -vf /etc/logrotate.d/custom

옵션 :

-v : 프로세스 보여주기

-f : 강제 실행

사용자 정의 : 사용자 정의 로그 설정

예 : mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}

실제로 완전한 예제를 제공하기위한 plus1 추신 : 파일에 실제로 어떤 로그 로테이션이 있는지 어떻게 알 수 있습니까?
personal_cloud

7

/var/lib/logrotate.status를 편집하여 테스트하려는 로그 파일에서 '최근 회전'날짜를 재설정하십시오.

그런 다음 실행 logrotate YOUR_CONFIG_FILE .

또는 --force 플래그를 사용할 수 있지만 logrotate.status를 편집하면 회전하거나 회전하지 않는 것에 대한 정밀도가 향상됩니다.


/var/lib/logrotate.status파일은 데비안 스퀴즈에 없습니다.
Lashae

/ var / lib / logrotate / status를 시도하십시오. 이것이 데비안 / 레드햇인지 또는 "."를 입력했는지 확실하지 않습니다. "/"를 넣어야합니다.
Ben Aveling

2

문제를 해결하기 위해 쉘 스크립트를 작성했습니다.

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

이 스크립트는 "/etc/logrotate.d"에있는 단일 logrotate 하위 구성 파일 만 실행하지만 전역 구성 파일 "/etc/logrotate.conf"의 전역 설정을 포함합니다. 그것을 테스트하기 위해 다른 otpions를 사용할 수도 있습니다 ...

예를 들어 ...

  logrotate_one -d syslog
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.