c - 如何在看门狗重启操作系统之前检测 Linux (Debian) 看门狗守护进程中出现的问题

标签 c linux debian systems-programming

我正在 Debian Linux 上开发一个应用程序项目,该项目涉及软件看门狗,通过服务创建的 PID 文件来监控其他服务。

我正在按照 http://linux.die.net/man/5/watchdog.conf 中的步骤操作 并安装它

apt-get 安装看门狗

背后的机制是 watchdog 检查这些 PID 文件是否存在,这些文件在/etc/watchdog,conf 文件中配置。

我已经通过停止任何服务来测试它 服务服务名停止

Watchdog 将检测到服务未处于运行状态,因此它会在等于 watchdog 超时时间的几秒后重新启动系统。

考虑到我们有一个显示较少的产品,然后它会在服务的配置文件损坏等情况下无限次地重新启动系统,而不会向最终用户发出任何提示。

实际期望是,在看门狗采取重启/暂停/软重启操作之前,我想知道看门狗的状态,以便程序员可以为最终用户实现通知逻辑。

否则是否可以修改/etc/init.d/中的看门狗初始化脚本以在停止软件看门狗时调用用户程序,以便程序员能够在非 volatile 存储器中维护一个计数器以避免无限次重启。

除了上面我想要更多关于这个软件看门狗或看门狗守护进程的信息以获得状态。我已经实现它来监视服务、CPU 过载、温度等,但在看门狗 Action 之前我没有收到任何事件,因此我不明白为什么系统会因服务中断、CPU 过热或 CPU 过载等而重启。

最佳答案

看门狗被设计为在系统发生无法恢复的故障后拯救系统的最后手段。硬件看门狗将物理重置 CPU,用于确保系统不会长时间挂起。

没有办法收到软件中会发生这种情况的警告,因为假定所有软件都出现故障。

如果您需要一种检测进程不再响应的解决方案,您应该将其与看门狗分开。

有关类似内容,请参阅此问题的答案: Designing a monitor process for monitoring and restarting processes

关于c - 如何在看门狗重启操作系统之前检测 Linux (Debian) 看门狗守护进程中出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39055418/

相关文章:

linux - 针对 XSD 进行验证时 perl libXML 崩溃

ubuntu - Linux 的 Windows 子系统的磁盘空间(如果我安装了 2 个 WSL 发行版)

c - 函数调用后销毁

c - Linux:捕获已运行进程的输出(纯 C 语言!)

c - Linux get_user_pages 是否保证页面不会被交换?

linux - 如何在 Linux 中比较两个目录的文件(仅使用文件名)?

linux - 始终在 linux 中调用具有特定标志的二进制文件

C: execve: 我必须为 shell 实现管道,但是我似乎无法从第二个管道中得到最终结果

python - 使用 Python 脚本在 Linux 中创建用户帐户时遇到问题

linux - 虚拟服务器/EC2 上的 32 位与 64 位操作系统