如何在看门狗执行前将日志复制到闪存?
How to copy logs to flash before watchdog execution?
如何在看门狗执行之前执行一些脚本(在我的情况下,它会编写将日志复制到闪存或远程复制日志的脚本)?
我应该修改 linux 内核看门狗驱动程序吗?如果是,采用哪种方法? 或者,也许可以通过以下方式以某种方式配置它:
/etc/default/watchdog
/etc/watchdog.conf
但是,我们安装了看门狗配置有限的繁忙盒。 我在谷歌上找不到任何东西,令人惊讶的是,这是需要解决的基本问题 - 每个人都希望在持久内存中的看门狗重置后拥有日志,闪存不是/var/log/路径的内容。
当然,在正常的设备生命周期中不时将日志复制到闪存的解决方案并不是一个好主意,因为应该有一些解决方案如何在馈送/dev/看门狗的看门狗超时到期时做到这一点。
在比 4.9 更新的 Linux 内核上,您应该具有预超时调控器框架的可用性,该框架允许您编写一个 Linux 内核驱动程序,该驱动程序将在检测到预超时时做出反应。像这样的解决方案远远超出了简单问答的范围,所以我保留了我原来的答案。
TL;博士:
如果在操作系统仍在运行时可检测到问题,则可以刷新日志。如果问题是由操作系统锁定引起的,那么您将没有机会解决问题,因为硬件将重置盒子。
这里有两件事:
- 看门狗装置
- 看门狗程序
看门狗设备通常是一个硬件计时器,当它的计时器到期时,它将执行"特定低级别"的操作。最常见的低级操作是重置框。如果它发生在硬件中,则不会涉及操作系统。一旦计时器用完,您将没有机会执行任何高级别的操作 - 例如在某处写入日志文件。
看门狗程序是一种工具,只要满足检查条件,就会定期向看门狗设备保证。
忙盒看门狗计时器的条件是一个简单的循环(伪代码):
while (1) {
# reassure watchdog
# sleep some time
}
因此,如果程序停止运行 - 例如通过操作系统锁定或程序终止,那么底层硬件将简单地踢盒子。
"更大"的看门狗二进制文件提供了一堆检查,如果它们失败,那么它将触发/etc/watchdog.conf
中的repair-binary
选项以尝试恢复。这将是刷新日志的潜在点。
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 使用strcpy将char数组的元素复制到另一个数组
- 是否可以初始化不可复制类型的成员变量(或基类)
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 复制列表初始化的隐式转换的等级是多少
- 当从函数参数中的临时值调用复制构造函数时
- 有可能在Armadillo中复制MATLAB circshift方法吗
- 复制几乎为空的数组的最快方法
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 以下示例中如何避免代码复制?C++/库达
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 为什么复制而不是移动数据元素?
- 文件系统:复制功能的速度秘诀是什么
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 如何在看门狗执行前将日志复制到闪存?