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, -mtime
um 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 .log
und 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