Ist es möglich, eine Logrotate-Prüfung manuell durchzuführen?

541

Ist es möglich, eine Iteration von logrotate manuell auszuführen, ohne sie in einem bestimmten Intervall zu planen?

Vladimir
quelle
3
Das Problem mit logrotate besteht darin, dass es eine globale Konfigurationsdatei enthält und Sie KEINE einzelne Unterkonfigurationsdatei für die Protokollrotation ausführen können, während Sie weiterhin die in der globalen Konfigurationsdatei festgelegten Optionen anwenden. Das heißt, es gibt keine gute Möglichkeit, nur EINE Protokollrotationsdateiprüfung auszuführen, genau wie wenn jede Nacht von cron ausgeführt würde. Dies könnte mit der Option "Beschränkung auf diese Protokolldateien" oder besser mit "Ausführen der globalen Konfiguration, aber nur mit dieser Unterkonfigurationsdatei" verbunden sein.
Anthony

Antworten:

717

Ja: logrotate --force $CONFIG_FILE

Pilger
quelle
115
Beachten Sie, dass --forceDateien gedreht werden, auch wenn sie die angegebenen Kriterien wie Größe, Alter usw. nicht erfüllen.
xofer
4
Wenn Sie die logrotate-Konfigurationsdatei in /etc/logrotate.d/custom.conf ablegen, bedeutet dies, dass Sie keine Größe / Zeit angeben müssen, zu der das Protokoll automatisch gedreht werden soll? Oder sollten Sie die Konfiguration in einem anderen Ordner ablegen, wenn Sie nicht beabsichtigen, sie automatisch zu drehen?
Damainman
18
Das Kriterium "notifempty" wird von "--force" nicht ignoriert. Das hat mich eine Weile verblüfft, deshalb erwähne ich dies als Ausnahme von der @ xofer-Anweisung.
Thelogix
16
Sie können einfach alle mit logrotate --force /etc/logrotate.d/(nur Verzeichnisname) drehen
fcm
1
Es ist wahr, dass --forcedie Rotation auch dann erzwungen wird, wenn Dateien nicht den Kriterien (Alter, Größe usw.) entsprechen. Beachten Sie jedoch, dass dies der einzige Weg ist, um echte Probleme zu erkennen, bei denen logrotate -dkeine Probleme auftreten würden (z. B. wenn mir ein Server ausgeht) Speicherplatz aufgrund von logrotate läuft seit Monaten nicht mehr ... und dank habe --forceich herausgefunden, dass es File existsFehler gab. Ich habe diese Dateien manuell gelöscht und jetzt funktioniert die Rotation wieder korrekt!
lucaferrario
559

logrotate -d [your_config_file] Ruft den Debug-Modus auf und gibt Ihnen eine ausführliche Beschreibung dessen, was passieren würde. Die Protokolldateien bleiben jedoch unberührt.

Sandover
quelle
81
Diejenigen, die hierher kamen, suchten nach der Antwort auf eine Frage wie "Wie kann ich meine logrotate conf testen?" kann dies als Antwort nehmen, da es nur den conf
kommradHomer
Ich habe es mit deinem Ansatz versucht logrotate --forceund arbeite gut.
Benyamin Jafari
122

Wenn Sie ein einzelnes bestimmtes Verzeichnis oder die Protokolldateien eines Dämons zwangsweise ausführen möchten, finden Sie die Konfiguration normalerweise in /etc/logrotate.dund sie funktionieren eigenständig.

Beachten Sie, dass die in angegebene globale Konfiguration /etc/logrotate.confnicht gilt. Wenn Sie dies tun, sollten Sie sicherstellen, dass Sie alle gewünschten Optionen in der /etc/logrotate.d/[servicename]Konfigurationsdatei angeben .

Sie können es ausprobieren, um -dzu sehen, was passieren würde:

logrotate -df /etc/logrotate.d/nginx

Dann können Sie ausführen (am Beispiel von nginx):

logrotate -f /etc/logrotate.d/nginx

Und nur die Nginx-Protokolle werden gedreht.

Trisweb
quelle
1
Das ist gut und schön, aber Sie verlieren alle globalen Einstellungen, die Sie in der "/etc/logrotate.conf" haben. Ich habe ein Skript geschrieben, um die globalen und spezifischen Logrotate-Dateien zusammenzuführen und es dann zu verwenden, um dieses Problem zu lösen. (siehe meine Antwort).
Anthony
Die Verwendung logrotate -d /etc/logrotate.confwird auch durch alle anderen enthaltenen conf-Dateien ausgeführt.
Wmassingham
61

Möglicherweise möchten Sie es im ausführlichen + Force-Modus ausführen.

logrotate -vf /etc/logrotate.conf

vivekv
quelle
36

Der Weg, um alle logrotate auszuführen, ist:

logrotate -f /etc/logrotate.conf

Dadurch wird die primäre Logrotate-Datei ausgeführt, die auch die anderen Logrotate-Konfigurationen enthält

Allen Hancock
quelle
21

Geben Sie den folgenden Befehl ein, um die angegebene Protokollrotation auszuführen:

logrotate -vf /etc/logrotate.d/custom

Optionen:

-v: Zeige den Prozess

-f: Lauf erzwingen

Benutzerdefiniert: Benutzerdefinierte Protokolleinstellung

zB: mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}
Wangc
quelle
plus1 für die tatsächliche Bereitstellung eines vollständigen Beispiels. PS Wie können wir feststellen, was logrotate tatsächlich mit den Dateien macht ?
personal_cloud
7

Bearbeiten Sie /var/lib/logrotate.status, um das Datum der letzten Drehung in der zu testenden Protokolldatei zurückzusetzen.

Dann renne logrotate YOUR_CONFIG_FILE.

Sie können auch das Flag --force verwenden, aber wenn Sie logrotate.status bearbeiten, erhalten Sie mehr Präzision darüber, was gedreht wird und was nicht.

Ben Aveling
quelle
Diese /var/lib/logrotate.statusDatei existiert nicht auf Debian Squeeze.
Lashae
Versuchen Sie / var / lib / logrotate / status. Ich bin mir nicht sicher, ob dies eine Debian / Redhat-Sache ist oder ob ich "." wo hätte ich "/" setzen sollen.
Ben Aveling
2

Erstellt ein Shell-Skript, um das Problem zu lösen.

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

Dieses Skript führt nur die einzelne logrotate-Unterkonfigurationsdatei aus, die sich in "/etc/logrotate.d" befindet, enthält jedoch die globalen Einstellungen aus der globalen Konfigurationsdatei "/etc/logrotate.conf". Sie können auch andere Optionen zum Testen verwenden ...

Zum Beispiel...

  logrotate_one -d syslog
Anthony
quelle