Entfernen Sie alle Protokolldateien außer der aktuellen Protokolldatei

Entfernen Sie alle Protokolldateien außer der aktuellen Protokolldatei

Mein SIP-Server generiert stündlich 3 Protokolldateien:

Progress-23May2017-10-00hrs.log Call-23May2017-10-00hrs.log Error-23May2017-10-00hrs.log

Ich muss also alle anderen Protokolldateien außer dem aktuellen Stundenprotokoll löschen. Ich habe es mit diesem Befehl versucht

 find . -type f -name "*-23May2017-10-00hrs.log" -print

Es hat die drei Protokolldateien meiner aktuellen Zeit ausgedruckt.

Als ich also diesen Befehl ausprobierte, um Dateien zu überprüfen, die nicht mit dem aktuellen Zeitprotokoll übereinstimmten,

find . -type f -name "!(*-23May2017-10-30hrs.log)" -print

es bringt mir nichts.

Wie kann ich meine anderen Protokolldateien löschen?

Antwort1

find /home/fi -maxdepth 1 -iname log\* -type f -mmin +1800 | sort | head -n -1 | xargs rm

Antwort2

Zunächst einmal: Ihre Suchvorgänge werden nicht maskiert, sodass die Platzhalter *umgewandelt werden. Um dies zu verhindern, können Sie entweder Backslashs \oder einfache Anführungszeichen verwenden .'

Also: find . -type f -name '*-23May2017-10-00hrs.log' -print sollte gut funktionieren.

Zurück zu Ihren eigentlichen Fragen: Es gibt mehrere Möglichkeiten, das zu lösen. Zunächst können Sie die Funktion von find verwenden, -mtimeum einfach jede Datei abzuhören, deren letzte Änderung x Minuten zurückliegt. Nehmen wir an, Ihr SIP-Server meldet sich bei/var/log/sip/

find /var/log/sip/ -type f -name '*.log' -mmin +$((24*60)) -print zeigt Ihnen alle Dateien mit der Endung „.exe“ an .logund deren letzte Änderung vor 24*60 Minuten (1 Tag) erfolgte.

Sie können jedoch auch ein Tool verwenden, das für die Protokollierung der Handhabung entwickelt wurde logrotate.

logrotate ist in jeder größeren Unix-Distribution verfügbar und ermöglicht es Ihnen, Dateien nach einem bestimmten Alter zu komprimieren, nach einem anderen Alter zu entfernen und so weiter. Die Liste der Funktionen ist ziemlich lang. Es ist einfach zu installieren, läuft als Daemon und Sie müssen sich nicht mit zusätzlichen Cronjobs herumschlagen.

Ich schlage vor, logrotate zu verwenden. Wie einfach das ist, sehen Sie hier:https://linux.die.net/man/8/logrotate

verwandte Informationen