Logrotate : postrotate에서 출력 파일에 액세스하는 방법


15

Nginx매일 로그를 회전 합니다 (로 dateext). 회전 후 방금 통과 한 날의 파일을 구문 분석하고 Nginx 서버가 반환 한 오류 수의 전자 메일을 컴파일하려고합니다.

의 postrotate / endscript 섹션에서 출력 파일에 어떻게 액세스 할 수 logrotate있습니까?


더 정교하게 할 수 있습니까?
Khaled

끝난. 미안하다, 나는 그것이 충분히 명확하다고 생각했다. :)
ibz

답변:


4

그것이 당신이 찾고있는 것이라면 사용할 수있는 변수를 알지 못합니다. 그러나 로그를 회전 한 직후에는 회전에 대해 설정 한 구성 등에 따라 파일이 회전 된 이름을 정확하게 알아야합니다 /var/log/somefile.1.

해결하려는 실제 문제를 설명하면 대답하기가 더 쉬울 것입니다.


문제가 관련이 없다고 생각했습니다. 지금 더 자세히 설명했습니다. 예, 날짜를 사용하여 파일 이름을 얻을 수는 있지만 변수 또는 다른 것을 통해 얻을 수 있기를 바랍니다.
ibz

3
Larsk가 원하는 것을 정확히 맞은 것 같습니다. $ 1은 찾고있는 변수입니다.
마크

17

"sharedscripts"지시문을 사용하지 않는 경우 postrotate 스크립트는 $ 1로 로그 회전을 트리거 한 파일을받습니다. 여러 logrotate 스탠자와 함께 일반 스크립트를 사용하려는 경우 도움이 될 수 있습니다. 즉, 다음과 같은 것이 주어진다 :

/var/log/sample1.log /var/log/sample[23].log {
  ..config...
}

일치하는 파일을 회전해야하는 경우 $ 1을 "/var/log/sample1.log", "/var/log/sample2.log"또는 "/var/log/sample3.log로 설정하여 스크립트가 호출됩니다. " 적절한. 그런 다음 ".1"을 추가하여 방금 회전 한 파일을 찾을 수 있습니다.

"sharedscripts"옵션을 사용하면 $ 1을 "/var/log/sample1.log /var/log/sample[23].log"로 설정하여 스크립트를 호출합니다 (특정 스탠자를 식별하는 데 도움이되지만 정확한 파일이 아님).

잘하면 이것은 당신에게 시작의 장소를 제공합니다. 이것은 logrotate> v3.7.5에서만 작동합니다.


1
능숙한. 실제로, 사전 및 사후 회전 스크립트는 모두 회전 된 파일 이름을 $ 1로받는 것으로 보이며, 이는 정확히 질문에서 요구하는 것입니다.
마크

1
@mark 스크립트는 출력 파일이 아닌 입력 파일 의 이름을받습니다
kbolino
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.