Czy można ręcznie uruchomić jedną kontrolę Logrotate?


540

Czy można ręcznie uruchomić jedną iterację programu logrotate bez planowania w określonych odstępach czasu?


3
Problem z logrotate polega na tym, że ma on jeden plik konfiguracji globalnej i NIE pozwala na uruchomienie pojedynczego pliku rotacji podkonfiguracji dziennika przy jednoczesnym zastosowaniu opcji ustawionych w pliku konfiguracji globalnej. Oznacza to, że nie ma dobrego sposobu na uruchomienie JEDNEJ kontroli rotacji plików dziennika, dokładnie tak, jak przy każdej nocy z crona. Mógłby to zrobić z opcją „ograniczenie do tych plików dziennika”, a jeszcze lepiej „uruchomić konfigurację globalną, ale uwzględnić tylko ten plik podkonfiguracji”.
Anthony

Odpowiedzi:


716

Tak: logrotate --force $CONFIG_FILE


115
zwróć uwagę, że --forcepliki zostaną obrócone, nawet jeśli nie będą spełniać określonych kryteriów, takich jak rozmiar, wiek itp.
xofer

4
Jeśli umieścisz plik konfiguracyjny logrotate w /etc/logrotate.d/custom.conf, czy to oznacza, że ​​nie musisz określać rozmiaru / czasu, w którym dziennik powinien się automatycznie obracać? A może powinieneś umieścić konfigurację w innym folderze, jeśli nie zamierzasz automatycznie obracać konfiguracji?
Damainman

18
Kryteria „notifempty” nie jest ignorowane przez „--force”. Przez chwilę mnie to zaskoczyło, dlatego wymieniam to jako wyjątek od oświadczenia @xofer.
thelogix

16
Możesz po prostu obrócić wszystko za pomocą logrotate --force /etc/logrotate.d/(tylko nazwa katalogu)
fcm

1
To prawda, że --forcewymusi rotację, nawet jeśli pliki nie spełniają kryteriów (wiek, rozmiar itp.), Ale proszę wziąć pod uwagę, że jest to jedyny sposób na wykrycie prawdziwych problemów, logrotate -dktóre się nie pojawiłyby (na przykład, gdy zabrakło serwera przestrzeń z powodu niedziałającego programu Logrotate od miesięcy ... i dzięki --forceFile exists
niemu

558

logrotate -d [your_config_file] wywołuje tryb debugowania, podając pełny opis tego, co się stanie, ale pozostawiając pliki dziennika nietknięte.


81
ci, którzy tu przybyli, szukając odpowiedzi na pytanie typu „jak mogę przetestować moją logrotate conf?” może wziąć ten jako odpowiedź, ponieważ tylko
TESTUJE konf

nie przejmowałem się twoim podejściem, próbowałem logrotate --forcei działa dobrze.
Benyamin Jafari,

122

Jeśli chcesz wymusić uruchomienie pojedynczego określonego katalogu lub plików dziennika demona, zwykle możesz znaleźć konfigurację /etc/logrotate.di będą one działać samodzielnie.

Należy pamiętać, że określona globalna konfiguracja /etc/logrotate.confnie będzie obowiązywać, więc jeśli to zrobisz, upewnij się, że określiłeś wszystkie opcje, które chcesz/etc/logrotate.d/[servicename] pliku konfiguracyjnym.

Możesz to wypróbować, -daby zobaczyć, co się stanie:

logrotate -df /etc/logrotate.d/nginx

Następnie możesz uruchomić (używając nginx jako przykładu):

logrotate -f /etc/logrotate.d/nginx

I same dzienniki nginx zostaną obrócone.


1
Jest to dobre i dobre, ale tracisz wszelkie ustawienia globalne, które masz w pliku „/etc/logrotate.conf”. Napisałem skrypt, aby połączyć globalne i określone pliki logrotate razem, a następnie użyć go, aby rozwiązać ten problem. (patrz moja odpowiedź).
Anthony

Użycie logrotate -d /etc/logrotate.confspowoduje także przejście przez inne dołączone pliki conf.
wmassingham

60

Możesz uruchomić go w trybie pełnym + wymuszonym.

logrotate -vf /etc/logrotate.conf


36

Sposób uruchomienia wszystkich programów logrotate to:

logrotate -f /etc/logrotate.conf

, który uruchomi podstawowy plik logrotate, który obejmuje również inne konfiguracje logrotate


21

Wydaj następującą komendę, sposób uruchomienia określonego programu logrotate:

logrotate -vf /etc/logrotate.d/custom

Opcje:

-v: pokaż proces

-f: wymuszanie uruchomienia

niestandardowe: ustawienie dziennika zdefiniowane przez użytkownika

np .: mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}

plus 1 za faktycznie dostarczenie pełnego przykładu. PS Jak możemy ustalić, co logrotate faktycznie robi z plikami ?
personal_cloud

7

edytuj /var/lib/logrotate.status, aby zresetować datę „ostatniej rotacji” w pliku dziennika, który chcesz przetestować.

Potem biegnij logrotate YOUR_CONFIG_FILE.

Możesz też użyć flagi --force, ale edycja logrotate.status zapewnia większą precyzję w stosunku do tego, co działa i nie jest obracane.


Ten /var/lib/logrotate.statusplik nie istnieje w Debian Squeeze.
Lashae

Wypróbuj / var / lib / logrotate / status. Nie jestem pewien, czy jest to kwestia debian / redhat, czy też wstawię „.” gdzie powinienem był wstawić „/”.
Ben Aveling,

2

Utworzono skrypt powłoki, aby rozwiązać problem.

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

Ten skrypt uruchomi tylko pojedynczy plik podkonfiguracyjny logrotate znaleziony w „/etc/logrotate.d”, ale uwzględni ustawienia globalne z pliku globalnego pliku konfiguracyjnego „/etc/logrotate.conf”. Możesz także użyć innych opcji do przetestowania go ...

Na przykład...

  logrotate_one -d syslog
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.