手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

syslogd(1M)

名称

syslogd - 记录系统消息

用法概要

/usr/sbin/syslogd [-d] [-f configfile] [-m markinterval] 
     [-p path] [-t | -T]

描述

syslogd 可根据消息的优先级以及生成消息的系统工具读取系统消息,并将其转发到适当的日志文件或用户。配置文件 /etc/syslog.conf(请参见 syslog.conf(4))可控制将消息转发到的位置。syslogd 将每 markinterval 分钟(缺省为 20 分钟)记录一次优先级为 LOG_INFO 的标记(时间戳)消息,并将该消息记录到在 syslog.conf 文件中命名为 mark 的工具中。

系统消息包括单行文本,其前缀可能为括在尖括号 (< >) 中的优先级代码编号;优先级可在 <sys/syslog.h> 中进行定义。

syslogd 可从 STREAMS 日志驱动程序 /dev/log 以及 /etc/netconfig/etc/net/transport/hosts/etc/net/transport/services 中指定的任何传输提供程序读取消息。

syslogd 将在启动时读取配置文件,一旦它收到 HUP 信号(请参见 signal.h(3HEAD)),并关闭已打开的所有文件,它就会再次读取其配置文件,然后仅打开该配置文件中列出的日志文件。syslogd 将在收到 TERM 信号时退出。

syslogd 将在启动时创建文件 /var/run/syslog.pid,如果可能,该文件将包含进程标识符 (PID)。

如果启用了消息 ID 生成(请参见 log(7D)),则每个消息前面将附加一个标识符,格式如下:[ID msgid facility.priority]msgid 是该消息的数字标识符,如 msgid(1M) 中所述。facilityprioritysyslog.conf(4) 中进行了介绍。[ID 123456 kern.notice] 就是在启用了消息 ID 生成之后的一个标识符示例。

如果消息是从可装入的内核模块或驱动程序生成的,则会显示内核模块名称(例如 ufs),而不是 unix。请参见”示例“部分以了解在启用和不启用消息 ID 生成的情况下 syslogd 的输出样例。

为了减少视觉混乱,在将消息写入控制台时,不会显示消息 ID;消息 ID 仅写入日志文件。请参见“示例”部分。

/etc/default/syslogd 文件包含缺省参数设置,如果未选择 –t–T 选项,则这些缺省设置将生效。

要允许或禁止记录消息,建议使用以下服务管理工具 (smf(5)) 属性:

svc:/system/system-log/config/log_from_remote

该属性用于指定是否记录远程消息。log_from_remote=true 等效于 –t 命令行选项,而 false 等效于 –T 命令行选项。–log_from_remote 的缺省值为 false。请参见下文的“附注”部分。

LOG_FROM_REMOTE

指定是否记录远程消息。LOG_FROM_REMOTE=NO 等效于 –t 命令行选项。LOG_FROM_REMOTE 的缺省值为 YES

选项

支持以下选项:

–d

启用调试功能。只有当系统处于多用户模式时,才应在 root shell 中以交互方式使用该选项。该选项应在系统启动脚本中使用,因为在启动 syslogd 时会使系统挂起。

–f configfile

指定备用配置文件。

–m markinterval

指定标记消息之间的间隔(以分钟为单位)。

–p path

指定备用日志设备名称。缺省值为 /dev/log

–T

启用 syslogd UDP 端口以启用远程消息日志记录。这是缺省行为。

–t

禁用 syslogd UDP 端口以禁用远程消息日志记录。

示例

示例 1 未启用消息 ID 生成时 syslogd 的输出

以下示例说明了启用消息 ID 生成时 syslogd 的输出:


Sep 29 21:41:18 cathy unix: alloc /: file system full

示例 2 启用消息 ID 生成时 syslogd 的输出

以下示例说明了启用消息 ID 生成时 syslogd 的输出。在将消息写入日志文件 /var/adm/messages 时,将显示消息 ID。


Sep 29 21:41:18 cathy ufs: [ID 845546 kern.notice] 
                                    alloc /: file system full

示例 3 启用消息 ID 生成时 syslogd 的输出

以下示例说明了在启用消息 ID 生成的情况下将消息写入控制台时的 syslogd 输出:即使已启用消息 ID,控制台上也不会显示消息 ID。


Sep 29 21:41:18 cathy ufs: alloc /: file system full

示例 4 启用接受来自远程系统的 UDP 消息

以下命令将使 syslogd 可以接受来自远程系统的条目。

# svccfg -s svc:/system/system-log setprop config/log_from_remote = true
# svcadm restart svc:/system/system-log

文件

/etc/syslog.conf

配置文件

/var/run/syslog.pid

进程 ID

/etc/default/syslogd

包含缺省设置。可以通过命令行选项覆盖某些设置。

/dev/log

STREAMS 日志驱动程序

/etc/netconfig

系统上可用的传输提供程序

/etc/net/transport/hosts

每次传输所使用的网络主机

/etc/net/transport/services

每次传输所使用的网络服务

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

logger(1)svcs(1)msgid(1M)svcadm(1M)svccfg(1M)syslog(3C)syslog.conf(4)attributes(5)signal.h(3HEAD)smf(5)log(7D)

附注

mark 消息是一个系统时间戳,因此,只有运行 syslogd 的系统才会定义该消息。它不能转发到其他系统。

如果 syslogd 收到 HUP 信号,则它会尝试完成输出暂挂消息,然后关闭当前用于记录消息的所有日志文件。如果其中一个或多个文件由于某些原因没有在宽限期内关闭,则 syslogd 将放弃暂挂消息,强制关闭这些文件,并启动重新配置。如果出现意外错误,从而影响到这一关闭过程,致使 syslogd 无法完成重新配置,则 syslogd 将向当前系统的超级用户发送一封邮件消息,指出它已关闭,然后退出。

请务必确保显示 syslogd 转发的消息的每个窗口(尤其是控制台窗口)都在系统缺省语言环境(即 syslogd 的语言环境)下运行。如果不遵循这一建议,syslog 消息就可能更改该窗口的终端设置,甚至可能会从该窗口远程执行任意命令。

syslogd 服务由服务管理工具 smf(5) 管理,其服务标识符为:

svc:/system/system-log:default

可以使用 svcadm(1M) 来对此服务执行管理操作(如启用、禁用或请求重新启动)。可以使用 svcs(1) 命令来查询服务的状态。

通过 svcadm(1M) 启动 syslogd 后,如果在 /etc/defaults/syslogd 文件中指定了 LOG_FROM_REMOTE 的值,则 SMF 属性 svc:/system/system-log/config/log_from_remote 将设置为与 LOG_FROM_REMOTE 的值对应的值,并会修改 /etc/default/syslogd 文件,以便使用以下注释替换 LOG_FROM_REMOTE 规范:

# LOG_FROM_REMOTE is now set using svccfg(1m), see syslogd(1m).

如果 LOG_FROM_REMOTEsvc:/system/system-log/config/log_from_remote 均未定义,则缺省设置为记录远程消息。

安装时,svc:/system/system-log/config/log_from_remote 的初始值为 false