管理核心转储文件概述
第23 章• 管理核心转储文件(任务) 401
启用setuid 程序以生成核心转储文件
使用coreadm 命令启用或禁用setuid 程序,以便通过设置以下路径来为所有系统进程或每
个进程生成核心转储文件:
如果启用了全局setuid 选项,则全局核心转储文件路径允许系统中所有setuid 程序生
成core 文件。
如果启用了每进程setuid 选项,则每进程核心转储文件路径只允许特定setuid 过程生
成core 文件。
缺省情况下,这两个标志都被禁用。由于安全原因,全局核心转储文件路径必须为全路径
名,以斜杠/ 开头。如果超级用户禁用每进程核心转储文件,则各个用户都无法获取核心
转储文件。
setuid 核心转储文件只属于具有超级用户读/写权限的超级用户所有。即使生成setuid 核心
转储文件的进程属于普通用户所有,常规用户也不能访问这些文件。
有关更多信息,请参见coreadm(1M)。
如何显示当前的核心转储配置
使用不带任何选项的coreadm 命令可以显示当前的核心转储配置。
$ coreadm
global core file pattern:
global core file content: default
init core file pattern: core
init core file content: default
global core dumps: disabled
per-process core dumps: enabled
global setid core dumps: disabled
per-process setid core dumps: disabled
global core dump logging: disabled
管理核心转储文件概述
402 系统管理指南:高级管理• 2006 年7 月
如何设置核心转储文件名称模式
确定要设置每进程还是全局核心转储文件,并选择下列项之一:
a. 设置每进程文件名称模式。
$ coreadm -p $HOME/corefiles/%f.%p $$
b. 成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。
c. 设置全局文件名称模式。
# coreadm -g /var/corefiles/%f.%p
如何启用每进程核心转储文件路径
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。
启用每进程核心转储文件路径。
# coreadm -e process
显示当前的进程核心转储文件路径,以验证配置。
$ coreadm $$
1180: /home/kryten/corefiles/%f.%p
如何启用全局核心转储文件路径
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。
启用全局核心转储文件路径。
# coreadm -e global -g /var/core/core.%f.%p
显示当前的进程核心转储文件路径,以验证配置。
# coreadm
◗
1
2
3
1
2
3
管理核心转储文件概述
第23 章• 管理核心转储文件(任务) 403
global core file pattern: /var/core/core.%f.%p
global core file content: default
init core file pattern: core
init core file content: default
global core dumps: enabled
per-process core dumps: enabled
global setid core dumps: disabled
per-process setid core dumps: disabled
global core dump logging: disabled
核心转储文件问题疑难解答
错误消息
NOTICE: ’set allow_setid_core = 1’ in /etc/system is obsolete
NOTICE: Use the coreadm command instead of ’allow_setid_core’
原因
存在一个过时的参数,它允许setuid 核心转储文件位于/etc/system 文件中。
解决方案
从/etc/system 文件中删除allow_setid_core=1。然后使用coreadm 命令启用全局setuid
核心转储文件路径。
检查核心转储文件
有些proc 工具的功能得到了增强,可以检查核心转储文件和实时进程。这些proc 工具是可
以管理/proc 文件系统功能的实用程序。
通过在命令行中指定核心转储文件的名称(方法与向命令指定进程ID 的方法相似),可将
/usr/proc/bin/pstack、pmap、pldd、pflags 和pcred 工具应用于核心转储文件。
有关使用proc 工具检查核心转储文件的更多信息,请参见proc(1)。
核心转储文件问题疑难解答
404 系统管理指南:高级管理• 2006 年7 月
示例23–1 使用proc 工具检查核心转储文件
$ ./a.out
Segmentation Fault(coredump)
$ /usr/proc/bin/pstack ./core
core ’./core’ of 19305: ./a.out
000108c4 main (1, ffbef5cc, ffbef5d4, 20800, 0, 0) + 1c
00010880 _start (0, 0, 0, 0, 0, 0) + b8
检查核心转储文件
第23 章• 管理核心转储文件(任务) 405
406
管理系统崩溃转储信息(任务)
本章介绍如何在Solaris 操作系统中管理系统崩溃转储信息。
有关与管理系统崩溃转储信息相关的过程信息,请参见第407 页中的“管理系统崩溃转储
信息(任务图)”。
管理系统崩溃转储信息(任务图)
以下任务图提供了管理系统崩溃转储信息所需的过程。
任务说明参考
1. 显示当前的崩溃转储配
置。
使用dumpadm 命令显示当前的崩溃转储配
置。
第410 页中的“如何显示当
前的崩溃转储配置”
2. 修改崩溃转储配置。使用dumpadm 命令指定要转储的数据类
型、系统是否使用专用转储设备和用于
保存崩溃转储文件的目录,以及在写入
崩溃转储文件后必须保持可用的空间
量。
第411 页中的“如何修改崩
溃转储配置”
3. 检查崩溃转储文件。使用mdb 命令查看崩溃转储文件。第412 页中的“如何检查崩
溃转储”
4. (可选)从完整的崩溃
转储目录中恢复。
系统崩溃,但savecore 目录中没有可用
空间,并且您需要保存一些关键的系统
崩溃转储信息。
第413 页中的“如何从完整
的崩溃转储目录中恢复(可
选)”
5. (可选)禁用或启用崩
溃转储文件的保存。
使用dumpadm 命令禁用或启用崩溃转储文
件的保存。缺省情况下,会启用崩溃转
储文件的保存。
第414 页中的“如何禁用或
启用崩溃转储的保存”
24 第2 4 章
407
系统崩溃(概述)
系统崩溃可能是由于存在硬件故障、I/O 问题和软件错误而引起的。如果系统崩溃,则会在
控制台中显示一条错误消息,然后向转储设备中写入物理内存的副本。然后,将自动重新
引导系统。重新引导系统时,将执行savecore 命令,以从转储设备中检索数据,并将保存
的崩溃转储文件写入savecore 目录。保存的崩溃转储文件为支持提供商提供了非常有价值
的信息,可帮助诊断问题的原因所在。
x86: GRUB 引导环境中的系统崩溃
Solaris 10 1/06:如果在GRUB 引导环境中基于x86 的系统中出现系统崩溃,则管理GRUB
引导归档文件svc:/system/boot-archive:default, 的SMF 服务可能在下一次系统重新引导
时失败。要解决此类问题,请参见第422 页中的“x86: SMF 引导存档服务在系统重新引导
期间失败时应执行的操作”。有关基于GRUB 的引导的更多信息,请参见《System
Administration Guide: Basic Administration》中的第11 章,“GRUB Based Booting (Tasks)”。
系统崩溃转储文件
savecore 命令在系统崩溃后自动运行,以从转储设备恢复崩溃转储信息,并写入名为
unix.X 和vmcore.X 的两个文件,其中X 表示转储序列号。这些文件共同表示保存的系统崩
溃转储信息。
崩溃转储文件有时容易与核心转储文件混淆,后者是在应用程序异常终止时写入的用户应
用程序的映像。
崩溃转储文件保存在预先确定的目录中,该目录缺省为/var/crash/hostname。在以前的
Solaris 发行版中,除非手动使系统将物理内存的映像保存到崩溃转储文件中,否则系统重
新引导时会覆写崩溃转储文件。现在,缺省情况下便可保存崩溃转储文件。
使用dumpadm 命令可以管理系统崩溃转储信息。有关更多信息,请参见第408 页中的
“dumpadm 命令”。
保存崩溃转储
使用mdb 实用程序可以检查控制结构、活动表、正常运行或崩溃的系统内核的内存映像,
以及有关内核运行的其他信息。要最大程度地发挥mdb 的作用,需要具备有关内核的详细
知识,这超出了本手册的范围。有关使用此实用程序的信息,请参见mdb(1) 手册页。
此外,还可以将savecore 保存的崩溃转储发送给客户服务代表,这有助于他们分析系统崩
溃的原因。
dumpadm 命令
使用dumpadm 命令可以管理Solaris 操作系统中的系统崩溃转储信息。
系统崩溃(概述)
408 系统管理指南:高级管理• 2006 年7 月
使用dumpadm 命令可以配置操作系统的崩溃转储。dumpadm 配置参数包括转储内容、转储
设备和保存崩溃转储文件的目录。
转储数据以压缩格式存储在转储设备中。内核崩溃转储映像的大小可以是4GB或更
大。压缩数据意味着转储速度更快,且转储设备所需的磁盘空间更小。
当专用转储设备(而不是交换区域)属于转储配置的一部分时,会在后台运行崩溃转储
文件的保存。这意味着引导系统不等待savecore 命令完成,便转到下一步。在较大的内
存系统中,可在savecore 完成前使用系统。
在缺省情况下,会保存savecore 命令生成的系统崩溃转储文件。
savecore -L 命令是一个新增功能,通过该功能可以获取正常运行的Solaris OS 的崩溃转
储。此命令用于通过在某些发生故障的状态下(例如瞬态性能问题或服务故障)捕获内
存快照,对正在运行的系统进行故障排除。如果系统已启动,并且您仍可以运行一些命
令,则可执行savecore -L 命令将系统快照保存到转储设备,然后立即将崩溃转储文件
写入savecore 目录。由于系统仍在运行,因此如果配置了专用转储设备,则只能使用
savecore -L 命令。
下表说明了dumpadm 的配置参数。
转储参数说明
转储设备在系统崩溃时临时存储转储数据的设备。当转储设备不是交换区域
时,savecore 将在后台运行,这样可以加快引导过程进行的速度。
savecore 目录存储系统崩溃转储文件的目录。
转储内容要转储的内存数据的类型。
最小空闲空间保存崩溃转储文件后savecore 目录中所需的最小空闲空间量。如果
未配置最小空闲空间,则缺省值为1MB。
有关更多信息,请参见dumpadm(1M)。
dumpadm 命令管理的转储配置参数存储在/etc/dumpadm.conf 文件中。
注– 不要手动编辑/etc/dumpadm.conf 文件。手动编辑此文件会导致系统转储配置不一致。
dumpadm 命令的工作原理
在系统启动期间,svc:/system/dumpadm:default 服务调用dumpadm 命令,以根据
/etc/dumpadm.conf 文件中的信息来配置崩溃转储参数。
具体地说,dumpadm 通过/dev/dump 接口来初始化转储设备和转储内容。
转储配置完成后,savecore 脚本将通过解析/etc/dumpadm.conf 文件的内容来查找崩溃转储
文件目录的位置。然后,会调用savecore 来检查崩溃转储,并检查崩溃转储目录中minfree
文件的内容。
阅读(460) | 评论(0) | 转发(0) |