25.2. 安装 ABRT 并启动其服务
要使用 ABRT,请确保您的系统上安装 了 abrt-desktop 或 abrt-cli 软件包。abrt-desktop 软件包为 ABRT 提供图形用户界面,而 abrt-cli 软件包则包含用于在命令行中使用 ABRT 的工具。您还可以同时安装.ABRT GUI 和命令行工具的一般工作流在过程上类似,并遵循相同的模式。
请注意,安装 ABRT 软件包会覆盖 /proc/sys/kernel/core_pattern
文件,该文件可包含用于命名 core-dump 文件的模板。此文件的内容将被覆盖:
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
有关如何使用 Yum 软件包管理器安装软件包的常规信息,请参阅 第 9.2.4 节 “安装软件包”。
25.2.1. 安装 ABRT GUI
ABRT 图形用户界面 为在桌面环境中工作提供了易于使用的前端。您可以以 root
用户身份运行以下命令安装所需的软件包:
~]# yum install abrt-desktop
安装时,ABRT 通知小程序配置为在图形桌面会话启动时自动启动。您可以通过在终端中运行以下命令来验证 ABRT 小程序是否正在运行:
~]$ ps -el | grep abrt-applet 0 S 500 2036 1824 0 80 0 - 61604 poll_s ? 00:00:00 abrt-applet
如果小程序没有运行,您可以通过运行 abrt-applet
程序在当前桌面会话中手动启动它:
~]$ abrt-applet &
[1] 2261
25.2.2. 为命令行安装 ABRT
命令行界面在无外设计算机、通过网络连接的远程系统或脚本中非常有用。您可以以 root
用户身份运行以下命令安装所需的软件包:
~]# yum install abrt-cli
25.2.3. 安装补充 ABRT 工具
要接收关于 ABRT 检测到的崩溃的电子邮件通知,您需要安装 libreport-plugin-mailx 软件包。您可以以 root
用户身份执行以下命令来安装它:
~]# yum install libreport-plugin-mailx
默认情况下,它会在本地计算机上向 root
用户发送通知。电子邮件目标可以在 /etc/libreport/plugins/mailx.conf
文件中配置。
要在登录时在控制台中显示通知,还要安装 abrt-console-notification 软件包。
ABRT 可以检测、分析和报告各种类型的软件故障。默认情况下,安装 ABRT 支持最常见的故障类型,如 C 和 C++ 应用程序的崩溃。对其他类型的故障的支持由独立的软件包提供。例如,要安装对使用 Java 语言编写的应用程序中检测异常的支持,以 root
用户身份运行以下命令:
~]# yum install abrt-java-connector
有关 ABRT 支持的语言和软件项目列表,请查看 第 25.4 节 “检测软件问题”。部分还包含启用检测各种故障类型的所有对应软件包的列表。
25.2.4. 启动 ABRT 服务
abrtd
守护进程需要存在 abrt
用户,以便在 /var/spool/abrt
目录中执行文件系统操作。安装 abrt 软件包时,如果此类用户尚不存在,它会自动创建 UID 和 GID 为 173 的 abrt
用户。否则,可以 手动创建 abrt
用户。在这种情况下,可以选择任何 UID 和 GID,因为 brtd
不需要特定的 UID 和 GID。
abrtd
守护进程配置为在引导时启动。您可以使用以下命令来验证其当前状态:
~]$ systemctl is-active abrtd.service
active
如果 systemctl
返回 inactive
或 unknown
,则守护进程没有运行。您可以以 root
用户身份输入以下命令来为当前会话启动它:
~]# systemctl start abrtd.service
您可以使用同样的命令来启动或检查相关错误检测服务的状态。例如,如果您希望 ABRT 检测到 C 或 C++ 崩溃,请确保 abrt-ccpp
服务正在运行。有关所有可用 ABRT 检测服务及其相应软件包的列表,请参阅 第 25.4 节 “检测软件问题”。
除 abrt-vmcore
和 abrt-pstoreoops
服务除外,这些服务仅在内核 panic 或内核 oops 发生时启动,所有 ABRT 服务将在安装相应软件包时自动启用并启动。您可以使用 systemctl
工具禁用或启用任何 ABRT 服务,如 第 10 章 使用 systemd 管理服务 所述。
25.2.5. 测试 ABRT 崩溃检测
要测试 ABRT 正常工作,请使用 kill
命令发送 SEGV 信号以终止进程。例如,启动一个 睡眠
进程并使用 kill
命令终止它:
~]$sleep 100 &
[1] 2823 ~]$kill -s SIGSEGV 2823
ABRT 执行 kill
命令后很快检测到崩溃,如果图形会话正在运行,GUI 通知小程序将通知用户检测到的问题。在命令行中,您可以通过运行 abrt-cli list
命令或检查 /var/spool/abrt/
目录中创建的崩溃转储来检查是否检测到了崩溃。有关如何使用检测到的崩溃的更多信息,请参阅 第 25.5 节 “处理检测到的问题”。