Cuido varias bases de datos MySQL que recientemente hemos trasladado a servidores Linux (desde Windows). Funcionan bien y todo está bien. Sin embargo, esta mañana necesitaba verificar los registros de errores, pero ahora están escritos en /var/log/syslog
.
Mi SysAdmin está desactivado hoy y por mi vida no puedo ver cómo leer estos datos.
Puedo obtener los últimos datos correctamente usando
tail -f /var/log/syslog
¿Pero cómo accedo a los datos a partir de la 1:00 am de hoy? o de ayer para el caso.
Lo intenté:
grep mysqld /var/log/syslog | less
pero eso me muestra datos desde las 6am en adelante
entonces lo intenté
grep '^Nov 4 01' /var/log/syslog | less
pero eso no me mostró nada más que una larga lista de ^
Respuesta1
syslog obtienegiradosobre una base regular. El resultado se ve así:
$ ls /var/log/syslog*
/var/log/syslog /var/log/syslog.1 ... /var/log/syslog.7.gz
Para grep el patrón "mysqld" en archivos syslog normales y rotados use zgrep, que es capaz de grep archivos comprimidos y sin comprimir:
$ zgrep mysqld /var/log/syslog* | less
Para buscar líneas que contengan "mysql" y una fecha específica, use el modificador -E, que habilita la extensiónexpresiones regulares:
$ zgrep -E 'Nov 4 01.+mysqld' /var/log/syslog* | less