我负责管理我们最近(从 Windows)迁移到 Linux 服务器的各种 MySQL 数据库。他们运行良好,一切都很好。然而,今天早上我需要检查错误日志,但这些日志现在已写入/var/log/syslog
.
我的系统管理员今天休息了,我一辈子都不知道如何读取这些数据。
我可以使用以下方式获取最新数据
tail -f /var/log/syslog
但是如何访问今天凌晨 1:00 以后的数据呢?或者从昨天开始。
我试过:
grep mysqld /var/log/syslog | less
但这显示了早上 6 点以后的数据
然后我尝试了
grep '^Nov 4 01' /var/log/syslog | less
但这只向我展示了一长串^
答案1
系统日志获取旋转的定期进行。结果如下:
$ ls /var/log/syslog*
/var/log/syslog /var/log/syslog.1 ... /var/log/syslog.7.gz
要在常规和轮换系统日志文件中 grep 模式“mysqld”,请使用 zgrep,它能够 grep 未压缩和压缩文件:
$ zgrep mysqld /var/log/syslog* | less
要 grep 查找包含“mysql”和特定日期的行,请使用 -E 开关,该开关启用扩展常用表达:
$ zgrep -E 'Nov 4 01.+mysqld' /var/log/syslog* | less