专题: Windows 到 Linux 之旅:第 5 部分. Linux 日志

原创 2004年08月31日 21:22:00

使用日志

级别:初级

Chris Walden (cmwalden-at-us.ibm.com)
电子商务架构师, IBM Developer Relations
2004 年 1 月

  IBM 电子商务架构师 Chris Walden 将通过他在 developerWorks 上发表的九篇系列文章来指导您如何在 Linux 环境中运用您的 Windows 操作技巧。在本部分,我们追踪、处理和轮循日志,以增强系统安全,收集信息。

成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。Linux 中提供了异常日志,并且日志的细节是可配置的。

Linux 日志都以明文形式存储,所以您不需要特殊的工具就可以搜索和阅读它们。您还可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。

Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有 root 才可以读,不过只需要修改文件的访问权限就可以让其他人可读。

/var/log/messages
messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常,/var/log/messages 是您在做故障诊断时首先要查看的文件。

/var/log/XFree86.0.log
这个日志记录的是 Xfree86 Xwindows 服务器最后一次执行的结果。如果您在启动到图形模式时遇到了问题,一般情况从这个文件中会找到失败的原因。

其他日志
根据您的 Linux 发行版本以及您所运行的服务和应用程序的不同,/var/log 目录下还会有其他日志文件。例如,可能会有与邮件服务器、资源共享、自动任务等相关的日志。

准备好了就开始轮循
您将看到,/var/log 目录下有一些文件以一个数字结尾,这些是已轮循的归档文件。日志文件会变得特别大,特别笨重。Linux 提供了一个命令来轮循这些日志,以使您的当前日志信息不会淹没在旧的无关信息之中。logrotate 通常是定时自动运行的,但是也可以手工运行。当执行后,logrotate 将取得当前版本的日志文件,然后在这个文件名最后附加一个“.1”。其他更早轮循的文件为“.2”、“.3”,依次类推。文件名后的数字越大,日志就越老。

您可以通过编辑 /etc/logrotate.conf 文件来配置 logrotate 的自动行为。通过 man logrotate 来学习 logrotate 的全部细节。

日志工具
任何文本工具都可以用来处理日志文件。下面是一些特别有用的工具。

dmesg
使用 dmesg 命令可以快速查看最后一次系统引导的引导日志。通常它的内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。

dmesg | more

上面的命令将以分页的方式显示引导信息。

tail
有时,当某些行为发生时,您会希望密切关注一个日志文件。Tail 命令设计用于显示文本文件的最后几行。使用 -f 开关,当日志增加新的内容时,tail 将继续显示新的输出。

tail -f /var/log/messages

上面的命令将显示 /var/log/messages 文件的最后 10 行,然后继续监控那个文件,并输出新的行为。要停止 tail -f 命令,使用 Ctrl + C 来中止进程。

more
More 的工作方式与 DOS 版本相同。您可以将它指向一个文件,或者通过它以管道输出信息,以分页的方式来查看信息。例如,以分页方式显示 Xfree86 启动日志文件的内容:

more /var/log/XFree86.0.log

使用“q”或者 [Ctrl]-C 来停止查看文件。

less
Less 是另一个文本阅读器,不过它还允许在文件中滚动浏览以及检索信息。

less /var/log/messages

上面的命令将显示 /var/log/messages 文件的内容。使用“q”来停止查看文件。使用“h”来获得 less 的使用帮助。

logger
您可能会希望将自己的消息也记录到日志文件。您可以只是将日志消息附加到恰当的文本文件,但是您必须得套用日志信息格式。同样,如果日志系统被定制,您还将不得不修改您的代码。llogger 命令使您可以将自己的消息发送到日志工具。在脚本中使用它来提供关于执行和错误的消息。

定制的日志
有两个服务,或者称之为后台程序,在控制日志,分别是 klogdsyslogdklogd 只处理内核消息,syslogd 处理其他系统消息,比如应用程序。您可以通过编辑 /et/syslog.conf 和 /etc/sysconfig/syslog 来配置它们的行为。完全定制日志超出了本文的范围,不过在本文最后的 参考资料 列表中可以找到详细的资料。您也可以查看 /etc/syslogd.conf 的 man 页面来进一步学习。

本质上,软件所产生的每一条消息都提供一些信息用于确定消息是从哪里来的以及这个消息是什么。/etc/syslog.conf 文件允许您来指定如何处理那种类型的消息。您可以将它转储到消息文件,也可以将它转储到一个定制的文件。您可以将它发送到远程的主机,由远程主机来根据其自己的 syslogd 配置来处理它。远程日志是一个非常好的安全功能。通过将您的日志放置到远程系统中,您可以防止有人通过改变日志文件来掩饰其踪迹。

下面是取自 man /etc/syslog.conf 页面中的一个定制日志的例子:

定制的日志

              # Kernel messages are first, stored in the kernel
              # file, critical messages and higher ones also go
              # to another host and to the console
              #
              kern.*                       /var/adm/kernel
              kern.crit                    @finlandia
              kern.crit                    /dev/console
              kern.info;kern.!err          /var/adm/kernel-info

第一个规则将所有内核消息定向到 /var/adm/kernel 文件。

第二个语句将所有优先级为 crit 或者更高的内核消息定向到一个名为 finlandia 的远程主机。这是有用的,因为如果主机崩溃以及磁盘错误无法恢复,您将无法读取存储的消息。如果那些消息同时在远程主机上也存在,您就依然可以找出崩溃的原因。

第三个规则将这些消息定向到实际的控制台,这样,在这台机器上工作的人也可以看到它们。

第四行告诉 syslogd 将所有优先级为 info 到 warning 的内核消息保存到 /var/adm/kernel-info 文件。所有优先级为 err 以及更高的消息不包括在内。

像这种定制日志的能力为 Linux 环境提供了极大的灵活性与可控制性。

Webmin 中的日志配置
Webmin 有一个用于操作日志文件的模块。

图 1. Webmin 系统日志视图
图 1. Webmin 系统日志视图

显示了所有配置的日志文件。点击一个日志文件来编辑它的配置。

图 2. Webmin 日志编辑屏幕
图 2. Webmin 日志编辑屏幕

或者您可以点击 View 来查看日志文件的内容。

在控制台中查看日志文件
由于 Linux 中的日志文件以明文的形式记录,所以不需要特殊的工具来解释它们。任何文本文件阅读器都可以显示 Linux 日志文件。浏览器,比如 Mozilla,可以显示日志文件,并且提供搜索功能。Linux 还有控制台工具可以查看文本文件。more,如同 MS DOS 版本一样以分页方式显示文件。less 命令将在只读阅读器中显示文件,这个阅读器具有双向滚动和搜索的功能。现在,在命令行中输入 less /var/log/messages,体会一下这个命令。

Webmin 模块与 /etc/syslog.conf 文件相关联,因此您对其中一个所做的修改会影响另一个。

您生活中的日志
Linux 中的日志文件对于系统的故障诊断和维护来说至关重要。Linux 日志记录到文本文件,所以不需要专门的工具来查看这些文件。文本文件也容易用于定制脚本和程序。

日志被轮循,以避免变得过大,同时可以将当前信息与老的数据相分离。日志轮循是可配置的。

日志是高度可配置的,为了安全和备份,日志甚至可以存储到单独的系统中。您可以让自己的脚本和程序产生系统日志消息,这些消息将被 syslogd 后台进程识别出并进行处理。

参考资料

关于作者
Chris Walden 是位于德克萨斯州奥斯汀的 IBM Developer Relations Technical Consulting(也称为 dragonslayers)的一名电子商务架构师,该公司为 IBM 商业伙伴提供教育、实现和咨询。他致力于 Linux 相关工作,一有机会就向身边的人宣传 Linux 的种种好处。除了完成他的架构师的职责之外,他还精通 Linux 基础设施服务器的各个领域,包括混合平台用户环境下的文件、打印以及其他应用服务等。Chris 有 10 年的计算机行业经验,从现场支持到 Web 应用开发和顾问,各个领域他都曾涉足。您可以通过 cmwalden-at-us.ibm.com 与 Chris 联系。

MOOC Linux内核之旅小结

工作两年,时事变迁,梦碎了一地,幸好还有内核。
  • titer1
  • titer1
  • 2015年04月28日 22:45
  • 2712

linux中使用tail -f查看日志出现中文乱码的解决方案

Linux操作系统: 1、vim修改服务器编码,把编码项改为  "zh_CN.UTF-8" [root@server ~]# vi /etc/sysconfig/i18n 在修改为 "zh_...
  • btt2013
  • btt2013
  • 2017年01月19日 15:43
  • 7270

Linux之redhat主客机系统日志同步与时间同步教程

在本文中主要介绍Linux系统中如何实现服务器和客户端的时间同步和日志同步,以及如何更改相应的配置文件,希望对你有所帮助。...
  • random_w
  • random_w
  • 2017年10月19日 04:30
  • 373

Linux系统的LOG日志文件及入侵后日志的清除

UNIX网管员主要是靠系统的LOG,来获得入侵的痕迹.当然也有第三方工具记录入侵系统的 痕迹,UNIX系统存放LOG文件,普通位置如下: /usr/adm - 早期版本的UNIX /var/a...
  • woswod
  • woswod
  • 2017年03月18日 13:26
  • 1993

linux日志文件系统总结

系统日志(本文参考了ibm网站的linux安全第二卷)          在 Linux 下使用各种日志文件,有些用于某些特殊用途,例如:/var/log/xferlog 用于记录文件传输协议 FTP...
  • MINEZHANGHAO
  • MINEZHANGHAO
  • 2013年09月19日 16:13
  • 4816

Linux内核的组成?以及各部分的作用?

"任何你真正想得到的一定是值得坚持的!“
  • qq_33044095
  • qq_33044095
  • 2016年09月24日 00:41
  • 1501

linux top 日志输出

最近用LR做性能测试,遇到一个问题,就是当系统压力大时,用LR通近RPC协议监控压测服务器经常会挂掉,这样就监控不到服务器的性能情况。 同时,我一般用top在后台观察服务器性能,但是需要时刻查看,因为...
  • redmoon729
  • redmoon729
  • 2016年12月05日 17:08
  • 1431

我的Unity 3D之旅——第一人称射击游戏(5)

六、UI界面 在进一步改进主角和敌人的脚本之前,我们需要创建一个游戏管理器来管理游戏中的事件和UI界面的显示。 在Unity脚本中,可以使用OnGUI方法绘制简单的UI,但是这样做在编写脚本的同时...
  • qq_26621551
  • qq_26621551
  • 2016年08月11日 15:51
  • 841

Windows 到 Linux 之旅: 第 8 部分. 备份与恢复

Linux 是一个稳定而可靠的环境。但是任何计算系统都有无法预料的事件,比如硬件故障。拥有关键配置信息的可靠备份是任何负责任的管理计划的组成部分。在 Linux 中可以通过各种各样的方法来执行备份。所...
  • xumaojun
  • xumaojun
  • 2013年03月31日 19:47
  • 326

Windows 到 Linux 之旅: 第 7 部分. 网络

在如今这个时代,运行一台没有连接到网络的计算机几乎是难以想像的。电子邮件、Web 浏览和文件共享像打印和查看屏幕上的信息一样,都是用户所期待的。 幸运的是,Liunx 从一开始就是为网络而开发的。事...
  • xumaojun
  • xumaojun
  • 2013年03月31日 19:42
  • 367
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:专题: Windows 到 Linux 之旅:第 5 部分. Linux 日志
举报原因:
原因补充:

(最多只允许输入30个字)