# watchdog **Repository Path**: smart-code-source/watchdog ## Basic Information - **Project Name**: watchdog - **Description**: 本机服务 Watchdog - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-11-05 - **Last Updated**: 2026-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 本机服务 Watchdog 一个 Bash 常驻脚本,适合安装在每台被监控的 Linux 节点上。它每 30 秒检查服务;连续 3 次失败后调用该服务已有的重启脚本。可监控长期运行的 Java、Python、Shell 等服务,不依赖中心服务器。 想先在本机体验,可运行 [Shell worker 与 Python Web 服务示例](examples/README.md)。 ## 配置 依赖 Bash 4.3+、`curl`、`flock`、`timeout`、`pgrep`、`sed` 和常见的基础系统命令。无需 logrotate。复制 [`services.conf.example`](services.conf.example) 到 `/etc/watchdog/services.conf`,每行一个服务: ```text 名称|HTTP健康地址|本机TCP端口|进程关键字|重启脚本绝对路径 orders|http://127.0.0.1:8080/health|8080|orders-service|/opt/orders/bin/service.sh payments||8081|payments-api.py|/opt/payments/bin/service.sh jobs|||/opt/jobs/bin/worker.sh|/opt/jobs/bin/service.sh ``` - 至少填一种检测条件。只使用最靠前的已配置条件:HTTP、端口、进程。HTTP 检查失败不会改查端口。 - HTTP 使用 GET,只有 2xx 算健康;连接超时 2 秒,总超时 5 秒。端口检查只连接 `127.0.0.1`,超时 3 秒。进程关键字按字面匹配完整命令行,务必选一个只出现在目标服务命令行里的词。 - 重启脚本须可执行,且接受 `restart` 参数。返回码 0 表示命令执行成功;watchdog 仍会在等待期后重新检查健康状态。重启脚本自行管理详细日志,watchdog 只记录命令和结果。 - 字段不能包含 `|`,不要在字段两侧留空格。配置在启动时读取;修改后重启 watchdog。 - 执行完即退出的定时脚本没有常驻进程可供检查,不适合用这里的进程关键字方式监控。 ## 安装和启动 把 `watchdog.sh` 安装到 `/opt/watchdog/watchdog.sh` 并赋予执行权限,创建 `/etc/watchdog/services.conf`。运行用户需要能执行各服务的重启脚本,以及写入 `/var/run/watchdog.lock`、`/var/run/watchdog.pid` 和 `/var/log/watchdog.log` 所在目录。建议用专门的有权管理这些服务的用户;以下示例使用 root。 没有 systemd 的节点,可以在 `/etc/rc.d/rc.local` 中加入: ```sh nohup /opt/watchdog/watchdog.sh >/dev/null 2>&1