JavaScript is required to for searching.
跳过导航链接
退出打印视图
解决 Oracle Solaris 11.1 中的典型问题     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

1.  管理系统故障转储信息(任务)

2.  管理核心文件(任务)

3.  系统和软件问题的故障排除(任务)

系统崩溃故障排除

系统崩溃时应执行的操作

收集故障排除数据

系统崩溃故障排除核对表

管理系统消息

查看系统消息

如何查看系统消息

系统日志轮转

定制系统消息日志

如何定制系统消息日志

启用远程控制台消息传送

在运行级转换期间使用辅助控制台消息传递

在交互式登录会话期间使用 consadm 命令的准则

如何启用辅助(远程)控制台

如何显示辅助控制台的列表

如何在系统重新引导期间启用辅助(远程)控制台

如何禁用辅助(远程)控制台

文件访问问题故障排除

解决搜索路径的问题 (Command not found)

如何诊断和更正搜索路径问题

更改文件和组的所有权

解决文件访问问题

识别网络访问问题

4.  其他系统和软件问题的故障排除(任务)

索引

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

管理系统消息

以下各节介绍了 Oracle Solaris 中的系统消息传送功能。

查看系统消息

系统消息显示在控制台设备中。大多数系统消息的文本如下所示:

[ID msgid facility. priority]

例如:

[ID 672855 kern.notice] syncing file systems...

如果消息来自内核,则会显示内核模块名称。例如:

Oct 1 14:07:24 mars ufs: [ID 845546 kern.notice] alloc: /: file system full 

当系统崩溃时,系统控制台可能会显示如下消息:

panic: error message

少数情况下,可能会显示以下消息而非故障消息:

Watchdog reset !

错误日志守护进程 syslogd 可在消息文件中自动记录各种系统警告和错误。缺省情况下,其中许多系统消息都会在系统控制台中显示,并存储在 /var/adm 目录中。通过设置系统消息日志可以指示这些消息的存储位置。有关更多信息,请参见定制系统消息日志。这些消息可以提醒您系统出现问题,例如设备将要出现故障。

/var/adm 目录中包含若干个消息文件。最新消息位于 /var/adm/messages 文件中(和 messages.* 中),而最旧的消息位于 messages.3 文件中。经过一段时间后(通常为每隔十天),会创建一个新的 messages 文件。messages.0 文件被重命名为 messages.1messages.1 被重命名为 messages.2,而 messages.2 被重命名为 messages.3。当前的 /var/adm/messages.3 文件将被删除。

由于 /var/adm 目录存储包含消息、故障转储和其他数据的大型文件,因此该目录可能会占用许多磁盘空间。为防止 /var/adm 目录变得过大,并确保可以保存将来的故障转储,应定期删除不需要的文件。可以使用 crontab 文件自动执行此任务。有关使此任务自动化的更多信息,请参见《Oracle Solaris 11.1 管理:设备和文件系统》中的"如何删除故障转储文件"《在 Oracle Solaris 11.1 中管理系统信息、进程和性能》中的第 4  章 "调度系统任务(任务)"

如何查看系统消息

示例 3-1 查看系统消息

以下示例显示了 Oracle Solaris 10 系统中 dmesg 命令的输出。

$ dmesg
Mon Sep 13 14:33:04 MDT 2010
Sep 13 11:06:16 sr1-ubrm-41 svc.startd[7]: [ID 122153 daemon.warning] ...
Sep 13 11:12:55 sr1-ubrm-41 last message repeated 398 times
Sep 13 11:12:56 sr1-ubrm-41 svc.startd[7]: [ID 122153 daemon.warning] ...
Sep 13 11:15:16 sr1-ubrm-41 last message repeated 139 times
Sep 13 11:15:16 sr1-ubrm-41 xscreensaver[25520]:  ,,,
Sep 13 11:15:16 sr1-ubrm-41 xscreensaver[25520]: ...
Sep 13 11:15:17 sr1-ubrm-41 svc.startd[7]: [ID 122153 daemon.warning]...
.
.
.

另请参见

有关更多信息,请参见 dmesg(1M) 手册页。

系统日志轮转

使用 root crontab 中的一个项内的 logadm 命令,可以轮转系统日志文件。不再使用 /usr/lib/newsyslog 脚本。

系统日志轮转在 /etc/logadm.conf 文件中定义。此文件包含用于 syslogd 等进程的日志轮转项。例如,/etc/logadm.conf 文件中的一个项指定,除非 /var/log/syslog 文件为空,否则该文件每周轮转一次。最新的 syslog 文件成为 syslog.0,下一个最新的文件成为 syslog.1,依此类推。会保留八个以前的 syslog 日志文件。

/etc/logadm.conf 文件还包含记录最后一次日志轮转发生时间的时间戳。

可以使用 logadm 命令来定制系统日志,并可根据需要在 /etc/logadm.conf 文件中添加其他日志。

例如,要轮转 Apache 访问和错误日志,请使用以下命令:

# logadm -w /var/apache/logs/access_log -s 100m
# logadm -w /var/apache/logs/error_log -s 10m

在此示例中,Apache access_log 文件会在大小达到 100 MB 时进行轮转,以 .0.1 等作为后缀,并保留旧 access_log 文件的 10 个副本。error_log 会在大小达到 10 MB 时进行轮转,后缀和副本数与 access_log 文件相同。

用于上述 Apache 日志轮转示例的 /etc/logadm.conf 项与以下示例类似:

# cat /etc/logadm.conf
.
.
.
/var/apache/logs/error_log -s 10m
/var/apache/logs/access_log -s 100m

有关更多信息,请参见 logadm(1M)

可以超级用户身份或通过承担等效角色(具有日志管理权限)来使用 logadm 命令。通过 RBAC(role-based access control,基于角色的访问控制),您可以通过提供对 logadm 命令的访问权限来授予非 root 用户维护日志文件的特权。

例如,可通过向 /etc/user_attr 文件添加以下项,授予用户 andy 使用 logadm 命令的权限:

andy::::profiles=Log Management

定制系统消息日志

通过修改 /etc/syslog.conf 文件,可以捕获各个系统进程生成的其他错误消息。缺省情况下,/etc/syslog.conf 文件会将许多系统进程消息定向到 /var/adm/messages 文件。崩溃和引导消息也存储在这些文件中。要查看 /var/adm 消息,请参见如何查看系统消息

/etc/syslog.conf 文件有两个通过制表符分隔的列:

facility.level ... action
facility.level

消息或情况的工具或系统源。可能是由逗号分隔的工具列表。表 3-2 中列出了工具值。level,表示所记录情况的严重程度或优先级。优先级级别列在表 3-3 中。

如果同一工具的两个项用于不同优先级,则不要将这两个项放在同一行中。在 syslog 文件中放置优先级表示将记录该优先级或更高优先级的所有消息,最后一条消息优先。对于给定的工具和级别,syslogd 将匹配该级别以及所有更高级别的所有消息。

action

操作字段表示将消息转发到的位置。

以下示例显示缺省的 /etc/syslog.conf 文件中的样例行。

user.err                                        /dev/sysmsg
user.err                                        /var/adm/messages
user.alert                                      `root, operator'
user.emerg                                      *

这意味着将自动记录以下用户消息:


注 - 如果在 /etc/syslog.conf 文件中多次指定一个日志目标,则将各项分别放置在不同的行中可能会导致消息的记录顺序混乱。请注意,可在一个行项中指定多个选择器,每个选择器之间用分号分隔。


下表中显示了最常见的错误情况源。最常见的优先级按严重性顺序显示在表 3-3 中。

表 3-2 syslog.conf 消息的源工具

说明
kern
内核
auth
验证
daemon
所有守护进程
mail
邮件系统
lp
假脱机系统
user
用户进程

注 - 可在 /etc/syslog.conf 文件中激活的 syslog 工具数没有限制。


表 3-3 syslog.conf 消息的优先级

优先级
说明
emerg
系统紧急情况
alert
需要立即更正的错误
crit
严重错误
err
其他错误
info
信息性消息
debug
用于调试的输出
none
此设置不记录输出

如何定制系统消息日志

  1. 承担 root 角色或指定有 solaris.admin.edit/etc/syslog.conf 授权的角色。

    请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 使用 pfedit 命令编辑 /etc/syslog.conf 文件,按照 syslog.conf(4) 中所述的语法添加或更改消息源、优先级以及消息位置。
    $ pfedit /etc/syslog.conf
  3. 保存更改。

示例 3-2 定制系统消息日志

此样例 /etc/syslog.conf user.emerg 工具将用户紧急消息发送给 root 个人用户。

user.emerg                                      `root, *'

启用远程控制台消息传送

以下新增控制台功能可以提高您对远程系统进行故障排除的能力:

在运行级转换期间使用辅助控制台消息传递

在运行级转换期间使用辅助控制台消息传递时,请记住以下几点:

在交互式登录会话期间使用 consadm 命令的准则

如果要通过使用与串行端口连接的终端登录系统,再使用 consadm 命令查看终端的控制台消息的方式来运行交互式登录会话,请注意以下行为。

如何启用辅助(远程)控制台

在您使用 consadm 命令添加辅助控制台之前,consadm 守护进程不会开始监视端口。作为一种安全功能,在载体脱机或取消选择辅助控制台设备之前,控制台消息只能重定向。这意味着必须在端口中建立载体,才能成功使用 consadm 命令。

有关启用辅助控制台的更多信息,请参见 consadm(1m) 手册页。

  1. 登录到系统并承担 root 角色。

    请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 启用辅助控制台。
    # consadm -a devicename
  3. 验证当前连接是否为辅助控制台。
    # consadm

示例 3-3 启用辅助(远程)控制台

# consadm -a /dev/term/a
# consadm
 /dev/term/a

如何显示辅助控制台的列表

  1. 登录到系统并承担 root 角色。

    请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 选择以下步骤之一:
    1. 显示辅助控制台的列表。
      # consadm
      /dev/term/a
    2. 显示持久性辅助控制台的列表。
      # consadm -p
      /dev/term/b

如何在系统重新引导期间启用辅助(远程)控制台

  1. 登录到系统并承担 root 角色。

    请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 在系统重新引导期间启用辅助控制台。
    # consadm -a -p devicename     

    这将会向持久性辅助控制台列表中添加设备。

  3. 验证设备是否已添加至持久性辅助控制台的列表中。
    # consadm

示例 3-4 在系统重新引导期间启用辅助(远程)控制台

# consadm -a -p /dev/term/a 
# consadm
/dev/term/a

如何禁用辅助(远程)控制台

  1. 登录到系统并承担 root 角色。

    请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 选择以下步骤之一:
    1. 禁用辅助控制台。
      # consadm -d devicename

      或者

    2. 禁用辅助控制台并从持久性辅助控制台列表中将其删除。
      # consadm -p -d devicename
  3. 验证是否已禁用辅助控制台。
    # consadm

示例 3-5 禁用辅助(远程)控制台

# consadm -d /dev/term/a
# consadm