Według The Unix i Linux Administration Handbook i man
, logrotate posiada opcje daily
, weekly
i monthly
, ale czy jest jakiś sposób, aby dodać hourly
opcję?
W tym wpisie na blogu wspomniano, że możesz ustawić size 1
i usunąć opcję czasu (np. daily
:), A następnie ręcznie zadzwonić za logrotate
pomocą cron
- tak mi się wydaje
logrotate -f /etc/logrotate.d/my-hourly-file
ale czy istnieje bardziej eleganckie rozwiązanie do obracania kłód co godzinę?
Odpowiedzi:
W zależności od systemu operacyjnego. Niektóre (wszystkie?) Dystrybucje Linuksa mają katalog, w
/etc/cron.hourly
którym można umieszczać zadania cron wykonywane co godzinę.Inni mają katalog
/etc/cron.d/
. Tam możesz umieścić zadania cron, które mają być wykonywane jako każdy specjalny użytkownik ze zwykłymi ustawieniami cron wpisu crontab (i musisz podać nazwę użytkownika).Jeśli użyjesz jednego z nich zamiast standardowego skryptu obracania dziennika
/etc/cron.daily/
, powinieneś skopiować ten skrypt tam icp /dev/null
na pierwotne miejsce. W przeciwnym razie zostanie on ponownie aktywowany przez aktualizację logrotate.Aby zapewnić prawidłową rotację godzinową, należy również uważać, aby
dateext
dyrektywa nie została ustawiona. Jeśli tak, domyślnie pierwszy obrócony plik otrzyma rozszerzenie bieżącej daty, takie jak RRRRMMDD. Następnie, po raz drugi logrotate uaktywni się w ciągu tego samego dnia, po prostu pominie rotację, nawet jeślisize
próg zostanie przekroczony.Powodem jest to, że nowa nazwa pliku, który ma zostać obrócony, już istnieje, a logrotate nie dołącza treści do istniejącego starego pliku. Na przykład w przypadku RHEL i CentOS
dateext
dyrektywa jest domyślnie podana w/etc/logrotate.conf
. Po usunięciu lub skomentowaniu tego wiersza obrócone pliki otrzymają po prostu numer bieżący jako rozszerzenie, aż do osiągnięciarotate
wartości. W ten sposób możliwe jest wykonywanie wielu obrotów dziennie.źródło
Aby dodać odpowiedź do Nilsa, jeśli zmienisz położenie
logrotate
skryptu w oknie Debiana lub Ubuntu, prawdopodobnie bezpieczniej jest używaćdpkg-divert
zamiast kopiować plik i kopiować/dev/null
do pierwotnej pozycji, np .:źródło
Inną opcją byłoby dodanie polecenia logrotate do listy crontab. Następnie będzie wykonywany co godzinę.
dodaj poniższą linię do listy crontab
źródło