在Linux中查看文件可以使用cat或者less命令,查看静态文件这种方式是可以的。对于动态文件,其内容会随时变化,要检测日志文件需要实时获取其内容。本文将介绍一些可以实时查看日志文件的命令和方法。
一. 使用tail命令
1. tail-f
tail
命令用于查看文件末尾的内容,使用-f
可以跟踪文件末尾的内容,这就意味着它会持续显示被加入到新文件中的内容。
tail -f /var/log/syslog
#举例:
$ sudo tail -f /var/log/apache2/access.log
-f
会持续显示文件新增内容
要停止跟踪日志文件,可以使用CTRL+C。
2. 结合grep
命令过滤关键信息
tail
命令可以实时查看文件内容的变化。但是,当文件内容更新特别快速的时候,刚刚更新的内容一闪而过,这种情况下,查看起来就不那么方便了。
为了解决这个问题,可以将 tail 和 grep 命令结合起来使用。
tail -f /var/log/syslog | grep "error"
使用 grep 展示搜索词,显示的信息比较有限,它只显示检索结果,因此可以使用 -C 选项来显示检索结果的前后几行:
tail -f /var/log/syslog | grep -C 3 "keywords"
3. 使用tail -F
参数
通常 Linux 服务器上的日志都是轮转日志。这种情况下,你需要用 -F 参数。
tail -F 会监控是否创建了新日志(所谓新日志指的是同一个名字,但是 fd 不一样的日志文件),并且会转而显示新日志的内容,而不是老文件的内容。
tail -F /var/log/apache2/access.log
- 默认情况下只显示后10行内容,可使用
-n
和-f
选择后几行
#查看后两行
$ sudo tail -n2 -f /var/log/apache2/access.log
4. 使用tailf
命令
tailf
命令本身内建了-f
参数
tailf /var/log/apache2/access.log
二. less命令
less
命令多用于读取文本文件,也可用于读取实时被更改的文件。
可以用 less
命令 查看日志文件,然后按下 Shift+F
实时查看日志内容。 less
中按下 Shift+F
会追踪文件末尾的内容。
也可以在调用 less
命令时就加上 +F
参数。
less +F /var/log/apache2/access.log
上述命令会打开日志文件,并实时显示正在写入的更改。
按 ctrl +c 中断显示,按 q 会退出视图。
三. 使用multitail命令
如果需要同时监控多个日志文件,可以使用multitail
命令。这个命令可以同时查看和比较多个日志文件的内容。
multitail
可以在拆分视图中显示文件,甚至可以在不同的行和列中显示不同的文件。
multitail /var/log/apache2/access.log /var/log/apache2/error.log
默认情况下multitail
的工作方式与 tail -f
相同,它显示最后100行,然后进入实时监视视图;另外,它按行来拆分视图。
可以按 b 键打开一个文件选择窗口,选择某个日志文件查看,以做进一步分析。
分割视图可以使用 -s 选项,后面跟一个数字,即视图的数量:
multitail -s 2 log_file1 log_file2
按 q 键可退出 multitail 所有的视图。
注意:multitail 在大多数Linux系统中没有被默认安装,所以在使用前需要先手动安装。