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?

Vladimir
źródło
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

pilcrow
źródło
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.

sandover
źródło
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.

trisweb
źródło
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

vivekv
źródło
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

Allen Hancock
źródło
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
}
wangc
źródło
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.

Ben Aveling
źródło
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
Anthony
źródło