systemd中是否有设置 自动重启服务 例如, 24小时?
或者实现这样一个功能的最佳解决方法是什么?
背景:在我长期运行的网络收集和存储到数据库代码中,我有一个难以识别的缺陷。它可以工作10或20天,然后突然停止,直到我们手动重置它。即使过多的伐木也让我不知道问题究竟来自哪里。当然,我更愿意解决潜在的问题,但是(出于经济原因)蛮力杀戮和重启可能也会解决问题。
编辑:我似乎终于找到了真正的缺陷 - 我没有(无法)设置超时的互联网查询(因为read_json函数不允许该选项)。现在已经通过socket.setdefaulttimeout(...)解决了这个问题 - 我希望能解决这个不经常停止的问题。 谢谢你的帮助!答案 0 :(得分:0)
Systemd具有内置的看门狗功能,有关详细信息,请参阅此link。
但是,您必须修补软件以发送sd_notify事件,因此看门狗知道您的软件仍然存在。
来自1:
首先,要使软件看门狗可监控,它需要 修补了定期发出“我还活着”的信号 事件循环。修补这个相对容易。首先,守护进程需要 阅读WATCHDOG_USEC =环境变量。如果设置,它会 包含usec格式为ASCII文本字符串的看门狗间隔, 因为它是为服务配置的。然后应该发出守护进程 sd_notify(“WATCHDOG = 1”)调用该间隔的每一半。一个守护进程 修补这种方式应该透明地支持看门狗功能 通过检查是否设置了环境变量并遵守 它被设置为的值。
更快速和肮脏的方法是设置 cron-job ,每24小时杀死一次,然后重新开始服务。
答案 1 :(得分:0)
我猜您的要求与以下问题相同。 question on periodic restart of service file
我希望这能回答你的问题。