核心转储的退出状态

核心转储的退出状态

当进程转储核心时,它是否设置任何特定的退出代码?或者,有没有办法检测核心是否已转储到 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) 手册页。

相关内容