systemd:24小时后自动重启服务?

时间:2016-09-21 16:01:44

标签: linux restart systemd

systemd中是否有设置 自动重启服务 例如, 24小时?

或者实现这样一个功能的最佳解决方法是什么?

背景:在我长期运行的网络收集和存储到数据库代码中,我有一个难以识别的缺陷。它可以工作10或20天,然后突然停止,直到我们手动重置它。即使过多的伐木也让我不知道问题究竟来自哪里。当然,我更愿意解决潜在的问题,但是(出于经济原因)蛮力杀戮和重启可能也会解决问题。

编辑:我似乎终于找到了真正的缺陷 - 我没有(无法)设置超时的互联网查询(因为read_json函数不允许该选项)。现在已经通过socket.setdefaulttimeout(...)解决了这个问题 - 我希望能解决这个不经常停止的问题。 谢谢你的帮助!

2 个答案:

答案 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

我希望这能回答你的问题。