跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:常见任务 Oracle Solaris 11 Information Library (简体中文) |
核心文件是在异常终止进程或应用程序时生成的。使用 coreadm 命令可以管理核心文件。
例如,可以使用 coreadm 命令来配置系统,以便将所有进程核心文件都放在一个系统目录中。这意味着,当进程或守护进程异常终止时,可通过检查特定目录中的核心文件来跟踪问题。
可以独立启用或禁用的两个新的可配置 core 文件路径是:
每进程核心文件路径,缺省为 core 并在缺省情况下启用。如果启用,则每进程核心文件路径会导致在进程异常终止时生成 core 文件。每进程路径由新进程从其父进程处继承。
生成每进程核心文件时,该文件由具有所有者读/写权限的进程所有者所有。只有所有者用户可以查看此文件。
全局核心文件路径,缺省为 core 并在缺省情况下禁用。如果启用,则会使用全局核心文件路径生成内容与每进程核心文件相同的附加核心文件。
生成全局核心文件时,该文件只属于具有超级用户读/写权限的超级用户所有。非特权用户不能查看此文件。
当进程异常终止时,缺省情况下会在当前目录中生成一个核心文件。如果启用了全局核心文件,则每个异常终止的进程可能会生成两个文件,一个在当前工作目录中,另一个在全局核心文件位置。
缺省情况下,setuid 进程不使用全局或每进程路径生成核心文件。
如果启用了全局 core 文件目录,则可使用下表中介绍的变量来区分 core 文件。
|
例如,如果全局核心文件路径设置为:
/var/core/core.%f.%p
并且 PID 为 12345 的 sendmail 进程异常终止,则会生成以下 core 文件:
/var/core/core.sendmail.12345
可以按全局、区域或进程设置核心文件名称模式。此外,还可以设置在系统重新引导时持续存在的每进程缺省值。
例如,以下 coreadm 命令将设置缺省的每进程核心文件模式。此设置适用于未显式覆盖缺省核心文件模式的所有进程。此设置在系统重新引导后继续存在。例如,在 Solaris 9 中,使用以下 coreadm 命令可以设置由 init 进程启动的所有进程的全局核心文件模式。此模式在系统重新引导后继续存在。
# coreadm -i /var/core/core.%f.%p
以下 coreadm 命令可为任何进程设置每进程核心文件名称模式:
# coreadm -p /var/core/core.%f.%p $$
$$ 符号表示当前正在运行的 Shell 的进程 ID 的占位符。所有子进程都会继承每进程核心文件名称模式。
一旦设置了全局或每进程核心文件模式,就必须使用 coreadm -e 命令启用该模式。有关更多信息,请参见以下过程。
通过在 $HOME/.profile 或 .login 文件中放置该命令,便可为用户登录会话期间运行的所有进程设置核心文件名称模式。
可以使用 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
# coreadm -e process
# coreadm $$ 1180: /home/kryten/corefiles/%f.%p
# coreadm -e global -g /var/core/core.%f.%p
# coreadm 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