gpt4 book ai didi

linux - 查看核心转储何时完成

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:47 25 4
gpt4 key购买 nike

我正在编写一个 bash 脚本,用于收集 CentOS 服务器上的各种诊断信息并将它们打包,以便将它们发送到我们公司进行分析。作为此脚本的一部分,我检查公司的应用程序是否响应。如果不是,我会触发应用程序进程的核心转储:

kill -6 $app_pid

此命令将导致为 pid $app_pid 写入进程核心转储。但是,我需要一种方法来等待核心转储生成完成。否则,由于核心转储不完整,我可能会创建损坏的诊断包。

我希望使用默认的 centos 软件包进行此检查,但如果必须的话,我也愿意安装其他软件包。

最佳答案

为您提供最大控制权的机制是在 /proc/sys/kernel/core_pattern 中指定管道。这将让您选择的程序在创建 coredump 时执行,因此该程序可以 100% 确定当(且仅当!)其标准输入文件描述符处于 EOF 条件时它具有完整转储。请参阅 man 5 core 中的“将核心转储传输到程序”部分.

如果您正在使用 systemd(如 CentOS 的现代版本),systemd-coredump 程序将已经以这种方式自行配置。 systemd-coredump 在压缩完成时从临时名称重命名文件,因此它已经完成了确保您只有一个完整的 coredump 准备好记录的工作。

因此,如果您有一个以以下形式命名的文件:

/var/lib/systemd/coredump/core.*.lz4

(或者通过您选择的压缩算法的扩展),您已经可以确信它是完整的,因为该文件是在 重命名为最终名称之前编写并设置了权限的.

关于linux - 查看核心转储何时完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45288871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com