You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何关闭/dev/watchdog文件时消除watchdog的日志消息?

解决watchdog接管时的"watchdog did not stop!"日志问题

问题背景

我使用硬件watchdog监控某进程的运行状态,进程挂起时触发系统重启。系统通过init.d脚本启动watchdog工具,后续目标进程需要接管watchdog控制权,因此要关闭watchdog工具,但此时日志中会出现如下警告:

[ 72.672542] watchdog: watchdog0: watchdog did not stop!

该日志的产生原因是内核启用了NOWAYOUT选项——文件关闭时自动停止的watchdog并非真正的硬件看门狗,该选项确保硬件看门狗不会因用户空间进程关闭设备而停止,因此关闭watchdog工具的设备文件时,内核会输出这条警告。


解决方案

方案1:通过syslog过滤屏蔽特定日志

如果使用rsyslog,可在配置文件(如/etc/rsyslog.conf或/etc/rsyslog.d/50-default.conf)中添加过滤规则,直接丢弃这条日志:

:msg, contains, "watchdog: watchdog0: watchdog did not stop!" ~

添加完成后重启rsyslog服务使配置生效:

service rsyslog restart

方案2:动态调整内核日志过滤

使用内核日志工具临时屏蔽这条警告(重启系统后失效):

dmesg --suppress-pattern="watchdog: watchdog0: watchdog did not stop!"

若需要永久生效,可将这条命令添加到接管watchdog的init.d脚本中,放在关闭watchdog工具的步骤之后执行。

方案3:避免关闭watchdog设备,直接接管控制权

修改init.d脚本与目标进程的启动逻辑,跳过关闭watchdog设备的步骤,直接复用已打开的设备连接:

  • 调整watchdog工具的启动参数,使用-f(前台运行)模式保持/dev/watchdog设备打开;
  • 通过进程间通信将已打开的文件描述符传递给目标进程;
  • 目标进程启动后直接复用该文件描述符进行喂狗操作,无需关闭原watchdog工具的设备连接,从根源上避免触发内核警告。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:21:14