如何在Linux中实时查看日志?使用tail -f命令动态监控日志更新

嘿嘿,说到Linux下的日志监控,这个我是很熟悉的。
记得刚开始接触Linux的时候,对tail -f命令实在是爱不释手。
说实话,当时我每天都是用这个命令盯着系统日志,读错误信息。
就像看悬疑剧一样,不错过任何一个线索。

首先,我们需要谈谈基本用法。
直接运行tail -f <日志文件路径>,如tail -f /var/log/syslog,默认会在文件末尾显示1 0行,然后会继续跟踪文件的新内容。
原理是通过文件描述符继续读取文件末尾。
一旦文件大小发生变化,就会显示新的内容。

但是,日志轮换会让很多人头疼。
例如,如果你正在监控的access.log被重命名为access.log.1 ,然后创建了一个新的空文件,如果你当前正在使用tail -f,它将继续监控旧文件,监控将失效。
目前,您需要使用tail -F(即--follow=name),以便它会定期检查文件名更改并自动切换到新文件。

此外,您可能想使用 grep 来过滤关键字。
这很简单,只需将 tail -f 的输出直接在管道 (|) 中发送到 grep 即可,例如 tail -f /var/log/syslog | grep "ERROR",以便只显示包含某些关键字的行。
您还可以使用 grep -i 忽略大小写,或使用 grep -E 使用正则表达式匹配复杂模式。

还有一个更简单的方法,就是使用less+F进入实时监控模式。
运行 less+F <日志文件路径>,然后按 Ctrl+C 退出实时模式。
此时,您可以向上滚动查看历史日志或搜索内容。

Multitail也是神器。
它可以同时监控多个日志文件,并支持关键字的自定义颜色突出显示。
例如,如果要同时分析某个Web服务的访问日志和错误日志,可以直接多尾/var/log/apache2 /access.log /var/log/apache2 /error.log。

对于使用systemd的系统,journalctl -f 是实时日志记录的好帮手。
可以使用它查看所有服务的实时日志,也可以指定服务名称,如journalctl -f nginx.service。

常见问题,例如权限不足,您可能会看到权限被拒绝的提示。
这通常是因为普通用户没有读取系统日志文件的权限。
目前需要使用sudo提权,例如sudo tail -f /var/log/auth.log。

不存在的日志文件或不正确的路径也是常见问题。
此时,您可能需要检查文件路径是否正确并验证服务是否已生成日志文件。

日志轮转会导致监控中断,因此可以使用tail -F 自动跟踪新文件。

如果日志输出太快,终端屏幕刷新,可以结合grep过滤关键字或者使用less+F暂停输出并回滚查看。
其实可以通过pv限速来控制日志输出速度。

如果要监控多个文件,可以考虑使用多个tails在终端中分屏显示多个日志流。

总之,掌握这个方法后,你就可以有效应对大部分日志监控场景,并且可以根据自己的需求灵活组合工具。
这既不难也不容易。
关键是多练习、多总结很多。
我也是一步一步来到这里的。

Linux日志中的“Timeout”问题怎么解决

说白了,超时问题是由网络、硬件、软件错误引起的。

先看系统日志。
使用 grep 命令搜索“timeout”。
重点关注具有特定服务名称(例如 sshdtimeout)的日志。

没有找到?检查来自 Nginx 或 MySQL 的专用日志。

日志显示网络超时?可能是路由错误或者DNS速度慢。
使用ping测试网段。

这是硬件问题吗?硬盘坏了?使用 smartctl 检查硬盘健康状况。
内存错误?用 memtester 运行它。

软件配置错误? Apache 超时太短?更改超时设置。
资源不够?查看 ulimit 设置。

网络问题,请尝试重启路由器。
装备坏了?更换新的。
软件有修改过吗?服务重新启动。

使用top查看处理器是否繁忙。
使用iotop对硬盘进行读写。
使用 iftop 检查网络速度。

硬盘每月检查一次,内存每季度测试一次。
系统自动更新。
关键服务分组在一起。

复杂的问题?使用 strace 来跟踪该过程。

你自己看看。

Linux进阶教程丨第9章:分析和储存日志

系统日志记录在 Linux 中至关重要。
默认日志存储在/var/log中,内核日志也位于此处。
systemd-journald 捕获内核和守护程序日志。
rsyslog 从 systemd-journald 检索日志并将其存储在类别中。
日志配置文件位于/etc/rsyslog.conf。
使用 tail -f 查看实时日志,例如监控失败的 SSH 尝试。
Journalctl 检查 systemd-journald 日志并按字段过滤它们。
对于持久日志,请将存储设置更改为持久。
更改配置后,重新启动 systemd-journald。
你自己掂量一下吧。