/usr/bin/savecore [-Lvd] [-f dumpfile] [directory]
savecore 实用程序保存内核的故障转储(假定生成了一个故障转储),并向关机日志写入重新引导消息。在每次系统引导时 dumpadm 服务会调用该实用程序。
可以通过 dumpadm(1M) 将 savecore 配置为将故障转储数据保存为压缩格式或未压缩的格式。对于压缩格式,savecore 将故障转储数据保存在文件 directory/vmdump.N 中,其中路径名中的 N 将由一个数字替换,每次在 directory 中运行 savecore 时该数字都会递增 1。压缩文件可以使用 –f dumpfile 选项在单独的步骤中进行解压缩。对于未压缩的格式,savecore 将故障转储数据保存在文件 directory /vmcore.N 中,而将内核的名称列表保存在 directory/unix.N 中。
在对 vmcore-*.N 文件执行提取时,会对远程系统中的 vmdump-*.N 文件进行完整性验证。也可以在不执行提取的情况下使用 –V 选项单独执行该操作。如果验证失败,savecore 会将文件标记为不完整。
在写出故障转储之前,savecore 会从文件 directory/minfree 中读取一个数字。这是包含 directory 的文件系统上必须保留的空闲空间的最小千字节数。如果在保存故障转储后,包含 directory 的文件系统的空闲空间会小于 minfree 中指定的千字节数,则不会保存故障转储。如果 minfree 文件不存在,则 savecore 会假定 minfree 值为 1 兆字节。
savecore 实用程序还使用工具 LOG_AUTH 记录重新引导消息(请参见 syslog(3C))。如果系统是因为发生紧急情况而崩溃的,savecore 还会记录紧急情况字符串。
支持以下选项:
忽略转储标头有效标志。强制 savecore 保存故障转储,即使转储设备中存储的标头信息指示已保存该转储时也是如此。
从指定的文件而不是从系统的当前转储设备保存故障转储。如果指定了 directory/vmdump.N,则将文件解压缩到 vmcore.N 和 unix.N,其中 N 与压缩后的名称中的数字相同。
如果已通过 dd(1M) 命令将转储设备中存储的信息复制到盘上文件,此选项也会十分有用。
保存实时运行的 Solaris 系统的故障转储,但不以任何方式实际重新引导或更改系统。此选项可强制 savecore 将系统的实时快照保存到转储设备,然后立即检索数据并将其写入指定目录中一组新的故障转储文件。只有在使用 dumpadm(1M) 将系统配置为使用专用转储设备后,才能执行实时系统故障转储。
savecore –L 不会暂停系统,因此在保存转储时内存的内容会继续发生更改。这意味着实时故障转储不是完全自我一致的。
详细模式。显示来自 savecore 的详细错误消息。
支持下列操作数:
将故障转储文件保存到指定目录。如果未指定 directory,则 savecore 会将故障转储文件保存到缺省的 savecore directory(通过 dumpadm(1M) 进行配置)。
directory/vmcore.N
directory/unix.N
directory/bounds
directory/minfree
/var/crash/`uname -n`(缺省故障转储目录)
有关下列属性的说明,请参见 attributes(5):
|
adb(1)、mdb(1)、svcs(1)、dd(1M)、dumpadm(1M)、svcadm(1M)、syslog(3C)、attributes(5)、smf(5)
系统故障转储服务由服务管理工具 smf(5) 管理,其服务标识符为:
svc:/system/dumpadm:default
可以使用 svcadm(1M) 来对此服务执行管理操作(如启用、禁用或请求重新启动)。可以使用 svcs(1) 命令来查询服务的状态。
如果转储设备也用作交换设备,则必须在引导后立即运行 savecore,以免包含故障转储的交换空间被当前运行的程序覆盖。
savecore 创建文件时,会附加后缀 .partial。文件完成后,会进行重命名,去掉此后缀。如果发现转储目录中的文件带有此后缀,则意味着 savecore 仍处于忙碌状态或者在完全写入文件之前被中断。如果是前一种情况,请使用 ps(1) 查找正在运行的 savecore 进程的 PID,然后等待该进程完成。如果是后一种情况,请删除未完成文件,然后运行 savecore –d 以重新创建该文件。