![核心转储的退出状态](https://linux22.com/image/41231/%E6%A0%B8%E5%BF%83%E8%BD%AC%E5%82%A8%E7%9A%84%E9%80%80%E5%87%BA%E7%8A%B6%E6%80%81.png)
当进程转储核心时,它是否设置任何特定的退出代码?或者,有没有办法检测核心是否已转储到 shell 脚本中。
我有一个 shell 脚本,它会触发一个偶尔会转储核心的作业。如果我的作业转储核心,我想修改 shell 脚本,以便下一行可以检查状态并通知其他感兴趣的作业转储核心。
我们保存核心转储并对其进行分析。现在这是通过简单的 find 命令完成的。如果我可以检查 shell 脚本中的某一行是否导致了核心转储,我就可以更快地诊断问题。
在 ubuntu 12.04 上。
答案1
实际上,当进程被某个信号终止时,会自动产生一个核心转储,并且退出代码将由信号(128 + signal_value)决定,在Linux下,信号至少可以是:SIGQUIT(3) 、SIGILL (4)、SIGABRT (6)、SIGFPE (8)、SIGSEGV (11)。有关更完整的列表,请参阅 signal(7) 手册页。核心转储并不总是会产生;请参阅 core(5) 手册页中的一些情况。
注意:在具有系统调用完全访问权限的语言中wait
(但这不是 POSIX shell 脚本的情况),您可以使用WCOREDUMP
(在 Linux 下可用),如果子进程生成了核心转储,则返回 true。有关详细信息,请参阅 wait(2) 手册页。