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?


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ć?


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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.