Jeśli konfiguracja logrotate jest określona parametrami „rozmiar” i „dzienny”, który z nich ma pierwszeństwo? Gdzie to jest udokumentowane? Chciałbym, aby te obroty występowały jako operacja logiczna OR, tzn. Jeśli dzienniki mają jeden dzień, obracają się, LUB jeśli są większe niż określony rozmiar, będą również obracane. Jednak logrotate używa obecnie tylko dyrektywy „rozmiar” i wydaje się ignorować dyrektywę „codzienną”. Logrotate jest skonfigurowany do uruchamiania co godzinę. System operacyjny to Linux, Red Hat i Debian.
Ponadto określam „codziennie”, a następnie „rozmiar” od początku pliku. Nie jestem pewien, czy kolejność ma znaczenie, ale w każdym razie trzeba najpierw zająć miejsce w pliku konfiguracyjnym ...
Dzięki!
Odpowiedzi:
Jeśli stosowana jest dyrektywa rozmiaru , logrotate zignoruje dyrektywy dzienne , tygodniowe , miesięczne i roczne . Nie jest to jasne w dokumentacji podczas wykonywania
man logrotate
polecenia. Można to jednak potwierdzić w praktyce i jest wspomniane w niektórych dowolnych postach na blogu, takich jak ten .Istnieje dyrektywa o nazwie minsize, która według strony podręcznika logrotate jest jedyną dyrektywą rozmiaru, która może być używana w połączeniu z tymi dotyczącymi czasu. Jednak nadal nie jest to, czego chcesz. Używanie minsize z dziennikiem zasadniczo mówi: obracaj dzienniki codziennie, ale tylko wtedy, gdy mają co najmniej # MB wielkości .
Do tej pory nie znalazłem sposobu, aby logrotate spełniał wymagany warunek: obracaj codziennie, chyba że rozmiar przekracza # MB, w takim przypadku obracaj natychmiast . Nie sądzę, że jest to obsługiwane przy użyciu tylko dyrektyw logrotate. Możliwe jest wykonanie sprytnego skryptu za pomocą dyrektyw haka skryptu, takich jak prerotate , postrotate , firstaction i lastaction .
Aktualizacja :
Począwszy od Logrotate 3.8.1,
maxsize
oraztimeperiod
są obsługiwane wspólnie, co byłoby rozwiązaniem idealnym. Zobacz odpowiedź na ten post: Jak obrócić dziennik na podstawie przedziału, chyba że dziennik przekroczy określony rozmiar?źródło
maxsize
itimeperiod
są obsługiwane. Na serverfault.com/questions/474941/…Pierwsza odpowiedź @egg jest, zgodnie z moimi doświadczeniami z logrotate, nieprawda!
Jeśli dzienne, miesięczne ... są najważniejsze, a po tej dyrektywie rozmiaru , dzienne, miesięczne ... zostaną zignorowane, a dyrektywa rozmiaru będzie miała zastosowanie do pliku dziennika.
Podobnie, kiedy po raz pierwszy użyję dyrektywy rozmiarów, a następnie dyrektyw dziennych, tygodniowych, miesięcznych i rocznych, dyrektywa rozmiarów będzie ignorowana.
źródło
Jeśli dodasz opcję Codziennie, będzie się obracać każdego dnia, nawet jeśli warunek Rozmiar zostanie spełniony. Jeśli dodasz również warunek rozmiaru, możesz uzyskać dwie rotacje w ciągu jednego dnia, w zależności od szczegółowości rejestrowania.
Jeśli Daily zajmie pierwsze miejsce w skrypcie, rozmiar może się nie uruchomić.
źródło
W rzeczywistości moja strona podręcznika w Red Hat wydaje się całkiem jasna na temat różnic między rozmiarem a minsize:
źródło