logrotate 구성 파일 구문-여러 개의 와일드 카드 항목이 가능합니까?


83

맨 페이지가 내 질문에 대답하지 않고 회전주기를 강제하고 싶지 않기 때문에 여기에서 질문을하기로 결정했습니다.

logrotate의 매뉴얼 페이지는 다음 예제를 제공합니다.

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail www@my.org
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }

와일드 카드가 포함 된 모든 예제에는 단일 항목 만 포함됩니다. 이제 내가 관심있는 것은 이것도 허용되는지 여부입니다.

   /var/log/httpd/*.log /var/log/httpd/*/*.log {
       # ... same as above
   }

추론은 다음과 같습니다. 여러 개의 호스트가 있고 해당 호스트를 "소유"한 사용자에 의해 분할됩니다. 로그 파일은 읽을 수 있기 때문에 폴더를 사용자 홈 디렉토리에 바인드 마운트하지만 사용자가 "소유"하는 로그 파일로 제한하려고합니다. 로그를 폴더로 분리하고 바인드하면 가장 쉽습니다. 마운트는 어쨌든 그 계획이 필요합니다). 그래서 이름별로 각 하위 디렉토리를 나열 필요 없이/var/log/httpd 해당 디렉토리의 하위 디렉토리에있는 모든 로그 파일뿐만 아니라 로그 파일을 모두 회전시키는 솔루션을 찾고 있습니다.

일반적으로 매뉴얼 페이지는 와일드 카드 규칙 또는 전체 경로에 대해 여러 항목이 가능한지 전혀 알 수 없습니다. 데비안 "Squeeze"와 함께 제공되는 logrotate 버전 3.7.8-6을 사용하고 있지만 반드시 배포판이나 프로그램 버전에만 해당되는 것은 아닙니다.

답변:


119

예, 여러 개의 와일드 카드를 사용할 수 있습니다. 다음을 수행하여 실제 회전을 수행하지 않고 파일을 테스트 할 수 있습니다.

logrotate -d -f /etc/logrotate.conf
  • -d = 디버그 모드를 켭니다. 디버그 모드에서는 로그 또는 로그 회전 상태 파일이 변경되지 않습니다.

  • -f = 이것이 필요하다고 생각하지 않더라도 logrotate가 회전을 강제하도록 지시합니다. 때로는 새 항목을 로그 로테이션에 추가 한 후 또는 새 로그 파일이 만들어 져서 로그가 올바르게 계속되어 오래된 로그 파일을 직접 제거한 경우에 유용합니다. '


3
고마워요! 그냥 시도하고 작동합니다. 출력에서 와일드 카드가 쉘에서와 같이 작동 할 것으로 예상됩니다.
0xC0000022L

24

방금 명확하게 설명하고 싶었습니다. 그것이 내가 여기에서 수행하는 방법이기 때문입니다.

단일 구성에 대해 여러 개의 로그 파일을 지정할 수 있습니다 (예 :

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
    rotate 5
    mail nobody@example.org
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}

//, 여러 줄에서 발생하는 다른 경로에 문제가 없습니까?
Nathan Basanese

@NathanBasanese 귀하의 질문을 완전히 이해하지 못합니다. 원하는 디스크의 어느 곳에서나 파일의 경로를 가리킬 수 있다고 생각합니다. 모두 동일한 디렉토리 접두사에있을 필요는 없습니다.
ThorSummoner

@NathanBasanese 오, 나는 다른 줄에 여러 개의 로그 회전 대상을 사용하는 것이 일반적으로 사용되는 것으로 이해한다고 생각합니다. 예를 들어 다른 logrotate.d 스크립트에서 해당 양식을 복사했습니다 (예 : /etc/logrotate.d/rsyslog
ThorSummoner

4

logrotate에 대한 매뉴얼 페이지에서 :

로그 파일 이름은 따옴표로 묶을 수 있습니다 (이름에 공백이 포함 된 경우 따옴표가 필요함). ', "및 \ 문자를 지원하는 일반 쉘 인용 규칙이 적용됩니다.

단일 패턴에서 여러 패턴으로 갈 때는 따옴표를 수정하거나 제거해야합니다.

이것은 작동합니다 :

/var/log/*.log /var/log/*.blog {

이것도 작동합니다.

/var/log/*.log
/var/log/*.blog {

작동하지 않습니다.

'/var/log/*.log /var/log/*.blog' {

그리고 이것도 아닙니다 :

"/var/log/*.log /var/log/*.blog" {

단일 패턴 케이스와 비교하십시오.

이것은 작동합니다 :

'/var/log/*.log' {

그리고 이것은 작동합니다 :

"/var/log/*.log" {

logrotate 3.10.0으로 테스트


2
이것이 작동하는지 알면 흥미로울 것입니다 :"/var/space /log/*.log" "/var/log/*.blog"
KajMagnus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.