跳过导航链接 | |
退出打印视图 | |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11 Information Library (简体中文) |
- 核心文件管理
coreadm [-g pattern] [-G content] [-i pattern] [-I content] [-d option]... [-e option]...
coreadm [-p pattern] [-P content] [pid]...
coreadm 指定异常终止的进程生成的核心文件的名称和位置。请参见 core(4)。
仅属于“维护和修复”RBAC 配置文件的用户和角色可以执行第一种格式的 SYNOPSIS(用法概要)。此用法概要可以配置系统范围的核心文件选项,包括全局核心文件名称模式和 init(1M) 进程的核心文件名称模式。所有设置都会永久保存,并在引导时应用。
非特权用户可以执行第二种格式的 SYNOPSIS(用法概要)。此语法格式可指定操作系统用于生成每进程核心文件的文件名称模式和核心文件内容。
核心文件名称模式是包含以前导字符 % 指定的嵌入变量的常规文件系统路径名。变量基于操作系统生成核心文件时的有效值进行扩展。可能的嵌入变量如下所示:
可执行文件目录名,最多包含 MAXPATHLEN 个字符
可执行文件名,最多包含 MAXCOMLEN 个字符
有效组 ID
机器名 (uname -m)
系统节点名 (uname -n)
进程 ID
time(2) 的十进制值
有效用户 ID
执行的进程所在的区域名称 (zonename)
字面值 %
例如,核心文件名称模式 /var/cores/core.%f.%p 对于进程 ID 为 1234 的 foo 命令,将生成核心文件名称 /var/cores/core.foo.1234。
通过使用一系列标记来标识进程的二进制图像的各个部分,可以指定核心文件内容描述。
匿名专用映射,包括非主线程栈的线程栈
装入的对象文件的 CTF 类型信息部分
可写的专用文件映射
DISM 映射
进程堆
ISM 映射
只读专用文件映射
匿名共享映射
文件支持的共享映射
System V 共享内存
进程栈
装入的对象文件的符号表部分
可读且可执行的专用文件映射
此外,可以使用标记 all 来表示核心文件应该包含进程的二进制图像的所有这些部分。可以使用标记 none 来指示将不包含任何映射。default 标记指示包含系统缺省内容 (stack+heap+shm+ism+dism+text+data+rodata+anon+shanon+ctf+symtab)。无论映射内容是什么,核心文件中始终存在 /proc 文件系统数据结构。
可以使用 + 和 - 来串联标记。例如,核心文件内容 default-ism 将生成包含缺省映射集但不含任何锁定共享内存映射的核心文件。
不带参数的 coreadm 命令将报告当前系统配置,例如:
$ coreadm global core file pattern: /var/cores/core.%f.%p global core file content: all init core file pattern: core init core file content: default global core dumps: enabled per-process core dumps: enabled global setid core dumps: enabled per-process setid core dumps: disabled global core dump logging: disabled
仅带进程 ID 列表的 coreadm 命令将报告每个进程的每进程核心文件名称模式,例如:
$ coreadm 278 5678 278: core.%f.%p default 5678: /home/george/cores/%f.%p.%t all-ism
只有进程所有者或具有 proc_owner 特权的用户才能以这种方式查询进程。
当进程进行核心转储时,最多会生成三个核心文件:一个在每进程的位置,一个在系统范围的全局位置,还有一个在运行的进程所在区域的全局位置(如果该进程在本地区域而非全局区域中运行)。将根据对应位置的有效选项生成每个核心文件。
生成全局核心文件后,该文件将具有 600 模式,并由超级用户拥有。非特权用户不能检查此类文件。
将通过进程凭证在模式 600 下创建普通的每进程核心文件。进程所有者可以检查此类文件。
一直是或者自从上一次 exec(2) 之后成为 setuid 或 setgid 的进程存在与核心转储相关的安全问题。同样,最初具有超级用户特权但因 setuid(2) 失去这些特权的进程也存在与核心转储相关的安全问题。上述任何一种类型的进程都可以在该进程的当前非特权所有者无法访问的地址空间中包含敏感信息。如果启用 setid 核心文件,则生成的文件将处于模式 600 并由超级用户拥有。
所支持的选项如下:
禁用指定的核心文件选项。有关可能的选项的描述,请参见 -e option。
可以在命令行上指定多个 -e 和 -d 选项。只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。
启用指定的核心文件选项。将 option 指定为以下类型之一:
允许使用全局核心模式的核心转储。
允许使用全局核心模式的 set-id 核心转储。
尝试生成全局核心文件时,生成 syslog(3C) 消息。
允许使用每进程核心模式的核心转储。
允许使用每进程核心模式的 set-id 核心转储。
可以在命令行上指定多个 -e 和 -d 选项。只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。
将全局核心文件名称模式设置为 pattern。模式必须以 / 开头,可以包含描述中介绍的任何特殊 % 变量。
只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。
将全局核心文件内容设置为 content。必须使用描述中介绍的标记来指定内容。
只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。
将缺省的每进程核心文件名称设置为 pattern。此选项更改每进程模式仍设置为缺省值的任何进程的每进程模式。已设置了每进程模式的进程或从一个已设置每进程模式的进程派生的进程(使用 -p 选项)不受影响。重新引导后仍会保持此缺省值。
只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。
将缺省的每进程核心文件内容设置为 content。此选项更改每进程内容仍设置为缺省值的任何进程的每进程内容。已设置了每进程内容的进程或从一个已设置每进程内容的进程派生的进程(使用 -P 选项)不受影响。重新引导后仍会保持此缺省值。
只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。
针对每个指定的进程 ID,将每进程核心文件名称模式设置为 pattern。模式可以包含描述中介绍的任何特殊 % 变量,无需以 / 开头。如果模式不是以 / 开头,则会相对于进程生成核心文件时使用的目录对其进行评估。
非特权用户只能将 -p 选项应用于该用户所拥有的进程。具有 proc_owner 特权的用户可以将该选项应用于任何进程。受影响进程的未来子进程将继承每进程核心文件名称模式。请参见 fork(2)。
如果没有指定进程 ID,则 -p 选项将在父进程(通常是运行 coreadm 的 shell)上将每进程核心文件名称模式设置为 pattern。
针对每个指定的进程 ID,将每进程核心文件内容设置为 content。必须使用描述中介绍的标记来指定内容。
非特权用户只能将 -p 选项应用于该用户所拥有的进程。具有 proc_owner 特权的用户可以将该选项应用于任何进程。受影响进程的未来子进程将继承每进程核心文件名称模式。请参见 fork(2)。
如果没有指定进程 ID,则 -P 选项将在父进程(通常是运行 coreadm 的 shell)上将每进程文件内容设置为 content。
支持下列操作数:
进程 ID
示例 1 设置核心文件名称模式
从用户的 $HOME/.profile 或 $HOME/.login 执行时,以下命令将为登录会话期间运行的所有进程设置核心文件名称模式:
example$ coreadm -p core.%f.%p
请注意,由于省略了进程 ID,因此将在当前运行的 shell 中设置每进程核心文件名称模式,且该模式将被所有子进程继承。
示例 2 将用户文件转储至子目录
以下命令将用户的所有核心转储转储至起始目录的 corefiles 子目录中,通过系统节点名称进行区分。该命令对于使用多个不同机器但具有一个共享起始目录的用户非常有用。
example$ coreadm -p $HOME/corefiles/%n.%f.%p 1234
示例 3 选择全局核心文件系统信息库
以下命令将系统设置为仅当从 /usr/bin 或 /usr/sbin 运行可执行文件时,才在全局系统信息库中生成核心文件。
example# mkdir -p /var/cores/usr/bin example# mkdir -p /var/cores/usr/sbin example# coreadm -G all -g /var/cores/%d/%f.%p.%n
为全局核心文件存储提供的目录。
将返回下列退出值:
成功完成。
获取或修改系统核心文件配置时发生致命错误。
指定的命令行选项无效。
有关以下属性的说明,请参见 attributes(5):
|
gcore(1)、pfexec(1)、svcs(1)、init(1M)、svcadm(1M)、exec(2)、fork(2)、setuid(2)、time(2)、syslog(3C)、core(4)、prof_attr(4)、user_attr(4)、attributes(5)、smf(5)
在本地(非全局)区域中,全局设置应用于该区域中运行的进程。此外,全局区域设置还应用于其他任何区域中运行的进程。
术语全局设置指的是应用于系统或区域整体的设置,但并不一定表示这些设置对全局区域有效。
coreadm 服务由服务管理工具 smf(5) 管理,其服务标识符为:
svc:/system/coreadm:default
可以使用 svcadm(1M) 来执行对此服务的管理操作(如启用、禁用或请求重新启动)。可以使用 svcs(1) 命令来查询服务的状态。
已经获得 solaris.smf.manage.coreadm 和 solaris.smf.value.coreadm 授权的用户、角色或配置文件也可以使用 -g、-G、-i、-I、-e 和 -d 选项。