Linux Watchdog 自动重启冻结系统

ZDNET AI··作者 Jack Wallen

关键信息

Watchdog 使用 `softdog` 内核模块并监控 `/dev/watchdog`。如果设备未被进程定期‘踢’(kick),则在超时后(默认 20 秒)触发重启。必须编辑配置文件以启用关键功能,如 watchdog-timeout。

资讯摘要

文章解释了如何使用 Watchdog——一个轻量级的 Linux 实用工具,用于检测系统死锁并自动重启机器。它特别适合没有物理访问权限的服务器或远程使用的桌面电脑。安装过程非常简单,可通过 apt、dnf 或 yay 包管理器完成。

安装后,用户需启用服务并配置 `/etc/watchdog.conf` 来设置超时和间隔等参数。配置完成后,Watchdog 在后台运行,成为系统冻结时的自动化恢复机制。

Linux Watchdog 自动重启冻结系统

资讯正文

这个简单的Linux设置能自动修复崩溃问题——而且对我而言完全免费。

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

我在家庭实验室中有多个Linux系统,包括桌面和服务器。绝大多数情况下,这些机器运行完美。但当那1%的情况发生时,任何出现问题的机器都需要帮助。

一种解决方案是使用名为Watchdog的小型软件包。该软件会执行各种检查,判断硬件是否“死机”。如果检测到这种情况,它将自动重启机器。

Watchdog有两种类型:软件和硬件。硬件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 现在将在后台运行,如果系统出现问题,它会自动执行相应操作。

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

sudo sysctl -w kernel.sysrq=1

sudo su -

echo c > /proc/sysrq-trigger

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

硬件方法

如果你恰好有一个硬件看门狗,可以通过配置 systemd 来激活它并执行重启。以下是具体配置步骤:

使用以下命令打开 systemd 配置文件:sudo nano /etc/systemd/system.conf

找到以下几行:

#RuntimeWatchdogSec=0

#RebootWatchdogSec=10min

#WatchdogDevice=

将它们修改为:

RuntimeWatchdogSec=30

RebootWatchdogSec=10min

WatchdogDevice=/dev/watchdog

保存并关闭文件。

然后使用以下命令重新加载 systemd 守护进程:sudo systemctl daemon-reload

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

来源与参考

  1. 原始链接
  2. This simple Linux tweak fixes crashes automatically - and it costs me nothing

收录于 2026-05-01