Ich betreue verschiedene MySQL-Datenbanken, die wir vor Kurzem (von Windows) auf Linux-Server verschoben haben. Sie laufen einwandfrei und alles ist gut. Heute Morgen musste ich jedoch die Fehlerprotokolle überprüfen, aber diese werden jetzt in geschrieben /var/log/syslog
.
Mein Systemadministrator hat heute frei und ich weiß beim besten Willen nicht, wie ich diese Daten lesen soll.
Die aktuellsten Daten kann ich problemlos abrufen mit
tail -f /var/log/syslog
Aber wie greife ich auf Daten von heute 1:00 Uhr zu? Oder von gestern?
Ich habe es versucht:
grep mysqld /var/log/syslog | less
aber das zeigt mir Daten ab 6 Uhr morgens
Ich habe dann versucht
grep '^Nov 4 01' /var/log/syslog | less
aber das zeigte mir nichts außer einer langen Liste von ^
Antwort1
Syslog erhältgedrehtregelmäßig. Das Ergebnis sieht so aus:
$ ls /var/log/syslog*
/var/log/syslog /var/log/syslog.1 ... /var/log/syslog.7.gz
Um das Muster „mysqld“ in regulären und rotierten Syslog-Dateien zu greppen, verwenden Sie zgrep, das in der Lage ist, unkomprimierte und komprimierte Dateien zu greppen:
$ zgrep mysqld /var/log/syslog* | less
Um nach Zeilen zu suchen, die "mysql" und ein bestimmtes Datum enthalten, verwenden Sie den Schalter -E, der erweiterteReguläre Ausdrücke:
$ zgrep -E 'Nov 4 01.+mysqld' /var/log/syslog* | less