日志文件提供重要的汇总信息,有助于了解系统或特定服务器的行为。在 unix 和与 unix 相似的系统上,日志文件仅仅是文本文件,相关联的服务器进程或系统日志记录守护进程在其中写入消息。所有 unix 和与 unix 相似的系统都使用一个通用的系统日志记录守护进程,一般名为 syslogd
或 syslog
,它处理来自许多应用程序和服务器的日志输出。linux? 系统还运行 klogd
,这是一个专门监视内核消息的守护进程。
使用 tail
命令的传统日志监视
监视系统或服务器日志中的新输出(后面简称为日志)所用的传统命令是 tail
命令,它显示指定的文件中最新的几行(在默认情况下为最新的 10 行)。在执行 tail filename
时,tail
命令显示指定的文件中最新的几行,然后退出。这对于监视日志文件更新帮助不大。为了主动地监视日志文件,常常带 -f
选项调用 tail
命令,这会显示文件中最新的几行,然后在指定的文件中添加新行时显示它们。
常常需要同时监视多个日志文件(这么做至少是有用的)。您希望监视的服务器进程常常写自己的日志文件,而 syslog
把不同类型的消息发送到不同的日志文件(取决于 /etc/syslog.conf 中的配置)。例如,在一个运行 ubuntu 的服务器系统上,常常需要同时监视 /var/log/auth.log(其中记录身份验证请求和更改)和 /var/log/kern.log(其中记录内核消息)。同样,在运行 apache web 服务器的服务器系统上,需要同时监视标准 apache 日志文件:/var/log/apache2/access.log 和 /var/log/apache2/error.log。
许多系统管理员(包括作者本人)以前会启动多个 xterm(或其他图形化控制台/shell 应用程序),每个 xterm 运行 tail -f
命令监视某一日志文件。这可以提供必需的信息,但是无论使用的字体多么小,都会占用大量屏幕空间。正如本文后面指出的,开放源码社区提供了几个免费的高级工具,可以替代这种原始的文件监视解决方案。
同时监视多个日志文件
实用程序 multitail 在 tail
命令的基本功能的基础上提供更多功能,允许用同一个终端应用程序同时监视多个文件。multitail(执行的命令为 multitail
)是一个采用 gnu public license (gpl) version 2 的应用程序,可以在大多数与 unix 相似的操作系统中找到,也很容易从源代码构建。构建 multitail
的惟一需求是 ncurses 库,它支持在终端窗口中执行伪图形化操作。
执行 multitail 最简单的方法是在命令行上指定要监视的文件的名称。例如,multitail access.log error.log
命令监视 apache web 服务器的两个主要日志文件,见 图 1。
图 1. 在 multitail 中查看多个 apache 日志
">
multitail 有许多选项,它的 unix 手册页中解释了所有选项。在终端会话中运行 multitail 时,可以通过各种键盘命令请求帮助、修改显示、搜索文本等等。在任何时候,按 control-h 即可访问 multitail 内置的帮助,这会显示 图 2 所示的帮助窗口。
图 2. 在 multitail 中查看帮助
">
可以使用箭头键滚动这个窗口,按 q 或 control-g 关闭它。(multitail 的帮助也与 f1 键相关联,但是 gnome 等图形化桌面常常会解释 f1 键,显示它们自己的联机帮助)。
multitail
命令的常用选项
表 1 列出比较常用的一些 multitail 命令行选项。
表 1. 常用的 multitail
命令选项
选项说明
--closeidle n可以指定一段时间,如果在这段时间内没有活动,multitail 窗口就会关闭。如果您同时监视许多文件,但是只关心经常更新的文件,就可以使用这个选项。尽管这个选项很方便,但是应该谨慎使用,因为在窗口关闭之后,如果文件中写入新的输出,窗口是不会重新打开的。
-i file可以指定要监视的文件的名称。在一般情况下,只需在命令行上列出要监视的文件的名称。可以通过 -i
选项和文件名监视名称以连字符 (-) 开头的文件。如果不使用 -i
选项,那么以连字符开头的文件名会被当作命令行选项。(这很像在 rm
等命令中使用 --
选项)。
--mark-interval n可以指定一段时间(n 秒),如果在这段时间内没有活动,就会在 multitail 输出窗口中显示一个标志行。例如,如果监视 /var/log/auth.log 文件,而在 n 秒内没有记录与身份验证相关的消息,multitail 就在这个日志文件的 multitail 输出窗口中显示 ---auth.log date time---
这样的一行。这在监视多个日志文件时尤其方便,很容易看出哪些日志文件没有记录新消息。
--no-repeat让 multitail 不在同一窗口中显示重复的消息,而是显示汇总消息(“last message repeated n times”)。
图 3 显示以下命令在示例机器上 60 秒后的输出:
multitail --mark-interval 10 --no-repeat auth.log \
daemon.log kern.log lpr.log mail.err mysql.err \
wpa_supplicant.log messages
图 3. multitail 中更高级的日志文件显示
">
如 图 3 所示,multitail 把可用的终端窗口高度分配给要监视的所有文件。在大多数情况下,只需查看日志文件输出中最新的一行或两行,就可以判断出显示的消息是否确实重要。
前面示例中使用的选项只是 multitail 选项的一小部分。如图所示,multitail 支持多种突出显示方式,包括基于模式的突出显示,可以方便地找到与特定设备相关联或包含特定关键字的消息。
multitail
命令不仅可以监视现有的文件。它还提供 -l command
选项,可以通过这个选项监视命令产生的连续输出。对于快速运行的命令,可以使用 -r n
选项在 n 秒后重复给定的命令。
![]()
如果喜欢监视日志和命令输出请收藏或告诉您的好朋友.
阅读(261) | 评论(0) | 转发(0) |