银河麒麟V10看门狗试验-1

第一步:加载软看门狗模块

bash 复制代码
# 查看当前是否已加载看门狗
lsmod | grep wdt

# 加载内核自带的软看门狗驱动
modprobe softdog

# 确认加载成功
lsmod | grep softdog
# 输出示例:softdog   16384  0

# 确认设备文件已生成
ls -la /dev/watchdog*
# 输出示例:crw------- 1 root root 10, 130  /dev/watchdog
# 或          /dev/watchdog0

第二步:查看当前状态

bash 复制代码
# 查看系统日志,确认看门狗已初始化
dmesg | grep -i watchdog
# 输出示例:
# [xx] softdog: Software Watchdog Timer: 0.08 initialized.
# [xx] softdog: initialized. soft_noboot=0 soft_margin=60 sec soft_panic=0

# 这里 soft_margin=60 表示超时 60 秒
# soft_noboot=0 表示超时后会重启系统

第三步:写一个喂狗程序

用 Python 最简单,不需要编译:

bash 复制代码
#!/usr/bin/env python3
"""
看门狗喂狗程序
每30秒喂一次狗,超时时间60秒------只要超过60秒没喂,系统就重启
"""

import sys
import time
import signal

WATCHDOG_DEV = "/dev/watchdog"

def main():
    # 打开看门狗设备
    try:
        fd = open(WATCHDOG_DEV, "w")
    except PermissionError:
        print("请用 sudo 运行此脚本")
        sys.exit(1)

    print(f"看门狗已打开: {WATCHDOG_DEV}")
    print("每15秒喂狗一次,按 Ctrl+C 停止(停止后系统会在60秒内重启)")

    # 优雅退出时关闭看门狗(可选,看试验需求)
    def graceful_exit(sig, frame):
        print("\n收到信号,正在关闭看门狗...")
        try:
            # 写入魔术字符 V 可以安全关闭 softdog
            fd.write("V")
            fd.flush()
            print("看门狗已安全关闭")
        except:
            pass
        fd.close()
        sys.exit(0)

    signal.signal(signal.SIGINT, graceful_exit)
    signal.signal(signal.SIGTERM, graceful_exit)

    # 主循环:定期喂狗
    while True:
        try:
            fd.write("X")   # 写入任意非V字符就是喂狗
            fd.flush()
            print(f"[{time.strftime('%H:%M:%S')}] 喂狗成功")
            time.sleep(15)
        except OSError as e:
            print(f"喂狗失败: {e}")
            break

if __name__ == "__main__":
    main()

第四步:运行试验

4.1 安全重启测试

bash 复制代码
# 运行喂狗程序
python3 watchdog_test.py

# 输出:
# 看门狗已打开: /dev/watchdog
# 每15秒喂狗一次,按 Ctrl+C 停止(停止后系统会在60秒内重启)
# [14:30:00] 喂狗成功
# [14:30:15] 喂狗成功
# [14:30:30] 喂狗成功

# 此时按 Ctrl+C,程序优雅退出,写入 'V' 关闭看门狗
# 系统不会重启

4.2 模拟死机测试(核心试验)

再开一个终端,模拟程序异常崩溃

bash 复制代码
# 先启动喂狗程序
sudo python3 watchdog_test.py &

# 记下它的 PID
ps aux | grep watchdog_test

# 模拟程序死机:直接杀掉进程
sudo kill -9 <PID>

# 或者用这个更强力的方法:
sudo killall -9 python3

观察现象

bash 复制代码
# 在一个独立终端里持续监控
watch -n 1 dmesg | tail -3

你会看到类似这样的日志:

bash 复制代码
softdog: WDT timeout, initiating system reboot
reboot: Restarting system

然后系统会在 60 秒后自动重启(60 秒是默认超时时间)。

第五步:调参

修改超时时间

bash 复制代码
# 卸载模块
sudo rmmod softdog

# 重新加载,设置超时为 10 秒(方便快速看到效果)
sudo modprobe softdog soft_margin=10

# 验证
cat /sys/module/softdog/parameters/soft_margin
# 输出: 10

检查 systemd 是否在占用看门狗

银河麒麟的 systemd 默认可能已经打开了看门狗:

bash 复制代码
# 查看 systemd 的看门狗配置
systemctl show | grep -i watchdog

# 如果 RuntimeWatchdogUSec 有值,说明 systemd 在用
# 此时你的程序打不开 /dev/watchdog

# 临时关掉 systemd 的看门狗(需要重启生效)
# 编辑 /etc/systemd/system.conf
# 注释掉 RuntimeWatchdogSec
相关推荐
白帽攻防录1 小时前
SRC 挖洞:WSO2 JWT 算法混淆绕过深度复盘,CVE-2026-5430 不支持的算法怎么变成管理员
网络·算法·安全·网络安全·jwt
starzy19901 小时前
Flink 优化之网络缓存优化及参数详解:从数据传输机制到反压原理的生产调优指南
网络·缓存·flink
古城小栈1 小时前
Pydantic 从入门到实践全讲解
python
happylifetree1 小时前
Python18:核心语法-数据存储与运算-运算符-算术运算符
python
打工仔折腾 AI2 小时前
从Attention到BERT:双向预训练语言模型到底解决了什么问题
人工智能·后端·python·深度学习·语言模型·bert
迅猛龙办公室2 小时前
实现第一个python程序(HelloWorld)
开发语言·python
正经教主2 小时前
【FDE系列】阶段3:Day 58:Prompt 安全 — 注入、越狱与防护
网络·人工智能·安全·prompt·fde
拉格朗日(Lagrange)2 小时前
【第2 章】WorkBuddy 从入门到高手
开发语言·python
实点科技3 小时前
实点科技IO-Link I/O IOL7A/B系列参数配置方法介绍
网络