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

退出打印视图

更新时间: 2014 年 7 月
 
 

coreadm(1M)

名称

coreadm - 核心文件管理

用法概要

coreadm [-g pattern] [-G content] [-i pattern] [-I content] 
     [-d option]... [-e option]...
coreadm [-p pattern] [-P content] [pid]...

描述

coreadm 指定异常终止的进程生成的核心文件的名称和位置。请参见 core(4)

仅属于“维护和修复”RBAC 配置文件的用户和角色可以执行第一种格式的“用法概要”。此用法概要可以配置系统范围的核心文件选项,包括全局核心文件名称模式和 init(1M) 进程的核心文件名称模式。所有设置都会永久保存,并在引导时应用。

非特权用户可以执行第二种格式的“用法概要”部分。此语法格式可指定操作系统用于生成每进程核心文件的文件名称模式和核心文件内容。

核心文件名称模式是包含以前导字符 % 指定的嵌入变量的常规文件系统路径名。变量基于操作系统生成核心文件时的有效值进行扩展。可能的嵌入变量如下所示:

%d

可执行文件目录名,最多包含 MAXPATHLEN 个字符

%f

可执行文件名,最多包含 MAXCOMLEN 个字符

%g

有效组 ID

%m

机器名 (uname –m)

%n

系统节点名 (uname –n)

%p

进程 ID

%t

time(2) 的十进制值

%u

有效用户 ID

%z

执行的进程所在的区域名称 (zonename)

%%

字面值 %

例如,核心文件名称模式 /var/cores/core.%f.%p 对于进程 ID 为 1234foo 命令,将生成核心文件名称 /var/cores/core.foo.1234

通过使用一系列标记来标识进程的二进制图像的各个部分,可以指定核心文件内容描述。

anon

匿名专用映射,包括非主线程栈的线程栈

ctf

装入的目标文件的 CTF 类型信息部分

data

可写的专用文件映射

dism

DISM 映射

heap

进程堆

ism

ISM 映射

rodata

只读专用文件映射

shanon

匿名共享映射

shfile

文件支持的共享映射

shm

System V 共享内存

stack

进程栈

symtab

装入的目标文件的符号表部分

text

可读且可执行的专用文件映射

此外,可以使用标记 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) 之后成为 setuidsetgid 的进程存在与核心转储相关的安全问题。同样,最初具有超级用户特权但因 setuid(2) 失去这些特权的进程也存在与核心转储相关的安全问题。上述任何一种类型的进程都可以在该进程的当前非特权所有者无法访问的地址空间中包含敏感信息。如果启用 setid 核心文件,则生成的文件将处于模式 600 并由超级用户拥有。

选项

支持以下选项:

–d option...

禁用指定的核心文件选项。有关可能的选项的描述,请参见 –e option

可以在命令行上指定多个 –e–d 选项。只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。

–e option...

启用指定的核心文件选项。将 option 指定为以下类型之一:

global

允许使用全局核心模式的核心转储。

global-setid

允许使用全局核心模式的 set-id 核心转储。

log

尝试生成全局核心文件时,生成 syslog(3C) 消息。

process

允许使用每进程核心模式的核心转储。

proc-setid

允许使用每进程核心模式的 set-id 核心转储。

可以在命令行上指定多个 –e–d 选项。只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。

–g pattern

将全局核心文件名称模式设置为 pattern。模式必须以 / 开头,可以包含“描述”部分介绍的任何特殊 % 变量。

只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。

–G content

将全局核心文件内容设置为 content。必须使用“描述”部分介绍的标记来指定内容。

只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。

–i pattern

将缺省的每进程核心文件名称设置为 pattern。此选项更改每进程模式仍设置为缺省值的任何进程的每进程模式。已设置了每进程模式的进程或从一个已设置每进程模式的进程派生的进程(使用 –p 选项)不受影响。重新引导后仍会保持此缺省值。

只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。

–I content

将缺省的每进程核心文件内容设置为 content。此选项更改每进程内容仍设置为缺省值的任何进程的每进程内容。已设置了每进程内容的进程或从一个已设置每进程内容的进程派生的进程(使用 –P 选项)不受影响。重新引导后仍会保持此缺省值。

只有属于“维护和修复”RBAC 配置文件的用户和角色才能使用此选项。

–p pattern

针对每个指定的进程 ID,将每进程核心文件名称模式设置为 pattern。模式可包含“描述”部分所述的任何特殊 % 变量,且需要以 / 开头。如果模式不是以 / 开头,则会相对于进程生成核心文件时使用的目录对其进行评估。

非特权用户只能将 –p 选项应用于该用户所拥有的进程。具有 proc_owner 特权的用户可以将该选项应用于任何进程。受影响进程的未来子进程将继承每进程核心文件名称模式。请参见 fork(2)

如果没有指定进程 ID,则 –p 选项将在父进程(通常是运行 coreadm 的 shell)上将每进程核心文件名称模式设置为 pattern

–P content

针对每个指定的进程 ID,将每进程核心文件内容设置为 content。必须使用“描述”部分介绍的标记来指定内容。

非特权用户只能将 –p 选项应用于该用户所拥有的进程。具有 proc_owner 特权的用户可以将该选项应用于任何进程。受影响进程的未来子进程将继承每进程核心文件名称模式。请参见 fork(2)

如果没有指定进程 ID,则 –P 选项将在父进程(通常是运行 coreadm 的 shell)上将每进程文件内容设置为 content

操作数

支持下列操作数:

pid

进程 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

文件

/var/cores

为全局核心文件存储提供的目录。

退出状态

将返回以下退出值:

0

成功完成。

1

获取或修改系统核心文件配置时发生致命错误。

2

指定的命令行选项无效。

属性

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

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

另请参见

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.coreadmsolaris.smf.value.coreadm 授权的用户、角色或配置文件也可以使用 –g–G–i–I–e–d 选项。