如何使用Linux Watchdog实现自动重启系统

ZDNET AI··作者 Jack Wallen

关键信息

软件Watchdog使用`softdog`内核模块和`/dev/watchdog`设备节点监控系统健康状态;如果在超时时间(默认20秒)内未被‘踢’,就会触发重启。它适用于大多数Linux发行版,包括Ubuntu、Fedora和Arch。

资讯摘要

文章详细介绍了如何设置Linux Watchdog实用程序以自动重启冻结的系统。首先说明了可以通过apt、dnf或yay等包管理器安装Watchdog。安装后,用户必须加载softdog内核模块并验证/dev/watchdog的存在。

接着编辑/etc/watchdog.conf文件,启用关键选项如watchdog-device、interval和watchdog-timeout。配置完成后,使用systemctl启用服务使其在后台运行。这种设置确保即使机器挂起——例如在远程访问时——也能自我恢复,非常适合桌面和服务器环境。

如何使用Linux Watchdog实现自动重启系统

资讯正文

我设置了这个Linux‘看门狗’,现在系统死机时会自动重启

如果你的Linux系统死机了,可能需要重新启动。借助一个小型应用程序,这可以自动化完成。Watchdog易于安装且免费使用。

我有几个连接到家庭实验室的Linux系统;其中一些是台式机,一些是服务器。99%的时间里,这些机器运行完美无缺。但当那1%的情况发生时,任何出现问题的机器都需要帮助。

一种解决方法就是使用一个名为Watchdog的小型软件包。这个软件会执行各种检查,判断硬件是否‘死机’。如果检测到这种情况,它就会重启机器。

Watchdog有两种类型:软件和硬件。硬件看门狗更可靠,但它需要专用硬件才能工作。软件看门狗可靠性稍差,但可以在大多数Linux系统上运行。

Watchdog的工作原理是:一个内核模块(softdog)配合Watchdog服务,通过倒计时定时器监视系统,并创建一个虚拟设备(/dev/watchdog)。

如果某个进程‘踢’了这个虚拟设备,计时器就会重置。

如果该设备没有被进程‘踢’,Watchdog就会重启系统。

理论上很简单,但底层实现要复杂得多。幸运的是,作为用户,你不需要深入研究就能理解Watchdog的基本原理。

尽管Watchdog对服务器尤其重要(特别是那些没有连接显示器、键盘或鼠标的情况),它对桌面系统也很有用。例如,假设你需要从办公室远程登录家里的Linux机器。如果那台机器死机了,你就无法访问它。但如果它装有Watchdog持续监控,就会自动重启,你就可以再次访问它。这非常方便。

你可能会觉得Watchdog设置起来很困难,但实际上并不难,即使你是刚开始接触Linux的新手。

让我来演示一下具体操作。

如何安装Watchdog

你需要准备:我将在运行Ubuntu 24.04的机器上演示。Watchdog存在于标准Ubuntu仓库中(Fedora仓库也有)。对于Arch用户,则需要用yay安装。

你还需要一个具有sudo权限的用户。

在Ubuntu上运行:

sudo apt-get install watchdog -y

如果是基于Fedora的机器:

sudo dnf install watchdog -y

对于Arch系统:

yay -S watchdog

然后加载模块:

sudo modprobe softdog

用以下命令验证模块是否已加载:

lsmod | grep softdog

如果看到softdog列出,说明已成功加载。

再检查设备节点是否存在:

ls -la /dev/watchdog

你现在就可以开始配置Watchdog了。

如何配置Watchdog

运行Watchdog后,你需要确保配置文件设置正确,以便在应该触发时真正发挥作用。这通过配置文件来完成。使用以下命令打开该文件:

sudo nano /etc/watchdog.conf

在该文件中查找以下行(它们在文件中并非连续出现):

# watchdog-device = /dev/watchdog

# interval = 1

# watchdog-timeout = 20

# Time in seconds before reboot

# realtime = yes

# priority = 1

# max-load-1 = 24

# max-load-5 = 18

# max-load-15 = 12

# min-memory = 1

你需要删除每行前面的 # 和空格。注意:如果找不到 watchdog-timeout = 20 这一行,请手动添加它。保存并关闭文件。

然后你需要使用以下命令启动并启用服务:

sudo systemctl enable --now watchdog

现在Watchdog已在后台运行,一旦系统出现问题,它就会自动执行任务。

另外:你可以在7个发行版上使用Linux 7.0——以下是你可以期待的内容。

如果你想测试Watchdog是否正常工作,可以通过以下三条命令手动触发内核崩溃:

sudo sysctl -w kernel.sysrq=1

sudo su -

echo c > /proc/sysrq-trigger

系统将变得无响应,而Watchdog应会重启它。

硬件方法

如果你恰好有一个硬件Watchdog,可以配置systemd来激活它并执行重启操作。以下是具体配置步骤。

使用以下命令打开systemd配置文件:

sudo nano /etc/systemd/system.conf

找到以下行:

#RuntimeWatchdogSec=0

#RebootWatchdogSec=10min

#WatchdogDevice=

将其修改为:

RuntimeWatchdogSec=30

RebootWatchdogSec=10min

WatchdogDevice=/dev/watchdog

保存并关闭文件。

另外:我的实用方法,无需升级内存即可加速Linux(而且免费)。

使用以下命令重新加载systemd守护进程:

sudo systemctl daemon-reload

这样就完成了。你现在拥有了一个监控系统的服务,一旦出现问题,它就会自动重启你的设备。

来源与参考

  1. 原始链接
  2. I set up this Linux 'Watchdog' and now my system auto-reboots when it locks up

收录于 2026-04-23