systemd 链接到标题 在之前的博客中介绍过 systemd 的基本使用及通过 timer 来替换 crontab 的方法,今天来说一下如何调用 watchdog。
在 systemd 中,提供 watchdog 来检测服务状态状态,官方文档中描述这个功能为 “keep-alive ping”,我们可以在服务的启动配置中,添加 WatchdogSec 来指定 timeout 时间,在服务程序中通过发送 WATCHDOG=1 来不断的通知 systemd,服务处于正常状态,当超过 timeout 时间未收到 WATCHDOG=1 信号后,systemd 会根据 Restart 配置,决定是否自动重启服务。
示例 链接到标题 服务程序:
root@yiran-30-250:/usr/lib/systemd/system $ cat /root/project/watchdog/test.py #!/usr/bin/python # coding:utf-8 import os import time import socket import logging print("Test starting up...") time.sleep(1) # 模拟执行真实业务 print("Test startup finished") try: sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) addr = os.getenv("NOTIFY_SOCKET") # systemd default addr = "/run/systemd/notify" if addr and addr[0] == "@": addr = "\0" + addr[1:] except Exception: logging.