- Unix/Linux 初学者指南
- Unix/Linux - 首页
- Unix/Linux - 什么是Linux?
- Unix/Linux - 入门
- Unix/Linux - 文件管理
- Unix/Linux - 目录
- Unix/Linux - 文件权限
- Unix/Linux - 环境
- Unix/Linux - 基本实用程序
- Unix/Linux - 管道与过滤器
- Unix/Linux - 进程
- Unix/Linux - 通信
- Unix/Linux - vi 编辑器
- Unix/Linux Shell 编程
- Unix/Linux - Shell 脚本
- Unix/Linux - 什么是Shell?
- Unix/Linux - 使用变量
- Unix/Linux - 特殊变量
- Unix/Linux - 使用数组
- Unix/Linux - 基本运算符
- Unix/Linux - 决策
- Unix/Linux - Shell 循环
- Unix/Linux - 循环控制
- Unix/Linux - Shell 替换
- Unix/Linux - 引号机制
- Unix/Linux - I/O 重定向
- Unix/Linux - Shell 函数
- Unix/Linux - 手册页帮助
- 高级 Unix/Linux
- Unix/Linux - 标准 I/O 流
- Unix/Linux - 文件链接
- Unix/Linux - 正则表达式
- Unix/Linux - 文件系统基础
- Unix/Linux - 用户管理
- Unix/Linux - 系统性能
- Unix/Linux - 系统日志
- Unix/Linux - 信号和陷阱
Unix/Linux - 系统日志
在本章中,我们将详细讨论 Unix 中的系统日志。
Unix 系统拥有一个非常灵活和强大的日志系统,它允许您记录几乎任何可以想象的事情,然后操纵日志以检索所需的信息。
许多版本的 Unix 提供了一个称为 **syslog** 的通用日志记录功能。需要记录信息的各个程序将信息发送到 syslog。
Unix *syslog* 是一个可由主机配置的统一系统日志记录功能。系统使用一个集中的系统日志记录进程,该进程运行程序 ** /etc/syslogd ** 或 ** /etc/syslog **。
系统记录器的操作非常简单。程序将其日志条目发送到 *syslogd*,后者会查阅配置文件 ** /etc/syslogd.conf ** 或 ** /etc/syslog **,并在找到匹配项时将日志消息写入所需的日志文件。
有四个基本的 syslog 术语您应该了解:
序号 | 术语及描述 |
---|---|
1 |
设施 用于描述提交日志消息的应用程序或进程的标识符。例如,邮件、内核和 ftp。 |
2 |
优先级 消息重要性的指示符。syslog 中定义了级别作为指南,从调试信息到关键事件。 |
3 |
选择器 一个或多个设施和级别的组合。当传入事件与选择器匹配时,将执行操作。 |
4 |
操作 对匹配选择器的传入消息执行的操作 - 操作可以将消息写入日志文件,将消息回显到控制台或其他设备,将消息写入登录的用户,或将消息发送到另一个 syslog 服务器。 |
Syslog 设施
现在我们将了解 syslog 设施。以下是选择器可用的设施。并非所有版本的 Unix 都提供所有设施。
设施 | 描述 |
---|---|
1 |
auth 与请求名称和密码相关的活动(getty、su、login) |
2 |
authpriv 与 auth 相同,但记录到只有选定用户才能读取的文件中 |
3 |
console 用于捕获通常定向到系统控制台的消息 |
4 |
cron 来自 cron 系统调度程序的消息 |
5 |
daemon 系统守护进程通用 |
6 |
ftp 与 ftp 守护进程相关的消息 |
7 |
kern 内核消息 |
8 |
local0.local7 每个站点定义的本地设施 |
9 |
lpr 来自行打印系统的消息 |
10 |
与邮件系统相关的消息 |
11 |
mark 用于在日志文件中生成时间戳的伪事件 |
12 |
news 与网络新闻协议 (nntp) 相关的消息 |
13 |
ntp 与网络时间协议相关的消息 |
14 |
user 常规用户进程 |
15 |
uucp UUCP 子系统 |
Syslog 优先级
syslog 优先级在以下表格中进行了总结:
序号 | 优先级及描述 |
---|---|
1 |
emerg 紧急情况,例如即将发生的系统崩溃,通常广播给所有用户 |
2 |
alert 应立即纠正的情况,例如损坏的系统数据库 |
3 |
crit 严重情况,例如硬件错误 |
4 |
err 普通错误 |
5 |
Warning Warning |
6 |
notice 不是错误但可能应以特殊方式处理的情况 |
7 |
info 信息消息 |
8 |
debug 调试程序时使用的消息 |
9 |
none 用于指定不记录消息的伪级别 |
设施和级别的组合使您能够明辨记录的内容以及信息去向。
当每个程序都尽职地将其消息发送到系统记录器时,记录器会根据选择器中定义的级别决定跟踪哪些内容以及丢弃哪些内容。
当您指定级别时,系统将跟踪该级别及更高级别的一切。
/etc/syslog.conf 文件
** /etc/syslog.conf ** 文件控制日志消息的存储位置。典型的 ** syslog.conf ** 文件可能如下所示:
*.err;kern.debug;auth.notice /dev/console daemon,auth.notice /var/log/messages lpr.info /var/log/lpr.log mail.* /var/log/mail.log ftp.* /var/log/ftp.log auth.* @prep.ai.mit.edu auth.* root,amrood netinfo.err /var/log/netinfo.log install.* /var/log/install.log *.emerg * *.alert |program_name mark.* /dev/console
文件的每一行包含两个部分:
**消息选择器**,指定要记录哪种消息。例如,内核的所有错误消息或所有调试消息。
**操作字段**,说明应如何处理该消息。例如,将其放入文件或将消息发送到用户的终端。
以下是上述配置的要点:
消息选择器包含两部分:**设施**和**优先级**。例如,*kern.debug* 选择内核(设施)生成的所有调试消息(优先级)。
消息选择器 *kern.debug* 选择所有优先级高于调试的优先级。
设施或优先级位置的星号表示“全部”。例如,** *.debug ** 表示所有调试消息,而 ** kern.* ** 表示内核生成的所有消息。
您还可以使用逗号指定多个设施。可以使用分号将两个或多个选择器组合在一起。
日志记录操作
操作字段指定以下五种操作之一:
将日志消息记录到文件或设备。例如,** /var/log/lpr.log ** 或 ** /dev/console **。
将消息发送给用户。您可以通过逗号分隔多个用户名;例如,root、amrood。
将消息发送给所有用户。在这种情况下,操作字段由星号组成;例如,*。
将消息通过管道传递到程序。在这种情况下,程序在 Unix 管道符号(|)后指定。
将消息发送到另一台主机上的 syslog。在这种情况下,操作字段由主机名组成,前面带有 at 符号;例如,@tutorialspoint.com。
logger 命令
Unix 提供了 **logger** 命令,这是一个处理系统日志记录的极其有用的命令。**logger** 命令将日志消息发送到 syslogd 守护进程,从而引发系统日志记录。
这意味着我们可以随时从命令行检查 **syslogd** 守护进程及其配置。logger 命令提供了一种方法,可以从命令行向系统日志文件添加单行条目。
命令格式如下:
logger [-i] [-f file] [-p priority] [-t tag] [message]...
以下是参数的详细信息:
序号 | 选项及描述 |
---|---|
1 |
-f filename 使用文件 filename 的内容作为要记录的消息。 |
2 |
-i 为每一行记录 logger 进程的进程 ID。 |
3 |
-p priority 以指定的优先级(指定的选取器条目)输入消息;可以以数字或设施.优先级对的形式指定消息优先级。默认优先级为 user.notice。 |
4 |
-t tag 使用指定的标签标记添加到日志中的每一行。 |
5 |
message 其内容按指定顺序连接在一起的字符串参数,并以空格分隔。 |
您可以使用 手册页帮助 检查此命令的完整语法。
日志轮换
日志文件有快速增长的趋势,并消耗大量磁盘空间。为了启用日志轮换,大多数发行版使用 ** *newsyslog* ** 或 ** *logrotate* ** 等工具。
应使用 **cron 守护进程** 在频繁的时间间隔内调用这些工具。有关更多详细信息,请查看 *newsyslog* 或 *logrotate* 的手册页。
重要的日志位置
所有系统应用程序都在 ** * /var/log * ** 及其子目录中创建其日志文件。以下是一些重要的应用程序及其对应的日志目录:
应用程序 | 目录 |
---|---|
httpd | /var/log/httpd |
samba | /var/log/samba |
cron | /var/log/ |
/var/log/ | |
mysql | /var/log/ |