Logrotate: jak uzyskać dostęp do pliku wyjściowego w postrotate

15

Obrócić Nginxdzienniki codziennie (z dateext). Po rotacji chcę przeanalizować plik dla właśnie minionego dnia i skompilować wiadomość e-mail z liczbą błędów zwróconych przez serwer Nginx.

Jak mogę uzyskać dostęp do pliku wyjściowego w sekcji postrotate / endcript w logrotate?

ibz
źródło
Czy możesz opracować więcej?
Khaled
Gotowy. Przepraszam, myślałem, że to wystarczająco jasne. :)
ibz

Odpowiedzi:

4

Nie znam żadnych zmiennych, których możesz użyć, jeśli tego właśnie szukasz. Jednak natychmiast po obróceniu dziennika powinieneś dokładnie znać nazwę, do której plik został obrócony w oparciu o konfigurację ustawioną dla obrotu ( /var/log/somefile.1lub podobną).

Być może łatwiej byłoby odpowiedzieć, jeśli opisałeś rzeczywisty problem, który próbujesz rozwiązać?

znak
źródło
Myślałem, że problem jest nieistotny. Wyjaśniłem to teraz bardziej szczegółowo. Tak, mogę po prostu użyć daty, aby uzyskać nazwę pliku, ale miałem nadzieję, że uda mi się to zrobić przez jakąś zmienną lub coś, co byłoby bardziej sensowne.
ibz
3
Wygląda na to, że larski trafiły dokładnie w to, czego chcesz. 1 USD to zmienna, której szukasz.
zaznacz
17

Jeśli nie korzystasz z dyrektywy „sharedscripts”, wówczas twój skrypt postrotate otrzymuje, jako 1 $, plik, który uruchomił rotację dziennika. Może to pomóc, jeśli próbujesz użyć ogólnego skryptu z wieloma sekcjami logrotate. To znaczy, biorąc pod uwagę coś takiego:

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

Jeśli jakieś pasujące pliki muszą zostać obrócone, twój skrypt zostanie wywołany z $ 1 ustawionym na „/var/log/sample1.log”, „/var/log/sample2.log” lub „/var/log/sample3.log „stosownie do przypadku. Następnie możesz dodać „.1”, aby znaleźć właśnie obrócony plik.

Jeśli użyjesz opcji „sharedscripts”, skrypt zostanie wywołany z $ 1 ustawionym na „/var/log/sample1.log /var/log/sample[23].log” (co pomoże ci zidentyfikować konkretną sekcję, ale nie dokładny plik).

Mam nadzieję, że to pozwoli Ci zacząć. Pamiętaj, że będzie to działać tylko w przypadku logrotate> v3.7.5.

Larsks
źródło
1
Poręczny. W rzeczywistości zarówno skrypt przed, jak i po rotacji otrzymuje nazwę obróconego pliku jako 1 $, dokładnie o to pyta pytanie.
zaznacz
1
@mark, skrypt otrzymuje nazwę pliku wejściowego , a nie pliku wyjściowego
kbolino,