Jak skonfigurować program Logrotate, aby co godzinę zmieniał dzienniki?


23

Według The Unix i Linux Administration Handbook i man, logrotate posiada opcje daily, weeklyi monthly, ale czy jest jakiś sposób, aby dodać hourlyopcję?

W tym wpisie na blogu wspomniano, że możesz ustawić size 1i usunąć opcję czasu (np. daily:), A następnie ręcznie zadzwonić za logrotatepomocą 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ę?


Pewnie. Jaki jest twój system operacyjny, jaka wersja?
Nils,

ubuntu 10.04 i 11
cwd 20.01.12

Odpowiedzi:


20

W zależności od systemu operacyjnego. Niektóre (wszystkie?) Dystrybucje Linuksa mają katalog, w /etc/cron.hourlyktó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 i cp /dev/nullna 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 dateextdyrektywa 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śli sizepró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 dateextdyrektywa 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ęcia rotatewartości. W ten sposób możliwe jest wykonywanie wielu obrotów dziennie.


5

Aby dodać odpowiedź do Nilsa, jeśli zmienisz położenie logrotateskryptu w oknie Debiana lub Ubuntu, prawdopodobnie bezpieczniej jest używać dpkg-divertzamiast kopiować plik i kopiować /dev/nulldo pierwotnej pozycji, np .:

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate

Nie wiedziałem o tym i używam Ubuntu od lat. Dziękuję Ci. :)
Vaughany,

2

Inną opcją byłoby dodanie polecenia logrotate do listy crontab. Następnie będzie wykonywany co godzinę.

crontab -e

dodaj poniższą linię do listy crontab

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
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.