2016-09-21 87 views
1

在systemd 中是否存在一個設置,以便在例如後自動重新啓動服務 。 24小時?systemd:24小時後自動重啓服務?

或者什麼是實現這種功能的最佳解決方法?

背景:我在長時間運行的Web收集和存儲到DB代碼中有一個難以識別的缺陷。它可以工作10或20天,然後突然停止,直到我們手動重置。即使過度採伐,我也不知道問題是從哪裏來的。當然,我寧願解決潛在的問題,但是(出於經濟原因),暴力破解和重新啓動也可能會訣竅。


編輯:我似乎終於找到了真正的缺陷 - 互聯網查詢,我沒有(不能)設置超時(因爲read_json功能並沒有讓該選項)。現在已經通過socket.setdefaulttimeout(...)解決了這個問題 - 我希望能夠解決這個不常發生的問題。 感謝您的幫助!

回答

0

Systemd具有內置看門狗功能,請參閱此link瞭解更多信息。

但是,您必須修補軟件才能發出sd_notify事件,因此看門狗知道您的軟件仍然存在。

1

所有的

首先,使軟件看門狗supervisable它需要 修補發出「我還活着」信號,定期在其 事件循環。修補它相對容易。首先,守護進程需要 讀取WATCHDOG_USEC =環境變量。如果已設置,則 將包含usec格式的看門狗時間間隔,格式爲ASCII文本字符串, 爲服務配置。然後該守護進程應該發出 sd_notify(「WATCHDOG = 1」)調用該間隔的每一半。以這種方式進行修補的守護進程 應該通過檢查環境變量是否已設置並遵守其設置的值來透明地支持看門狗功能 。

一個更加快速和骯髒的方法是建立一個的cron作業殺死的過程中,每24小時重新啓動您的服務。

+0

哇,真是太棒了。太感謝了。 「看門狗」,太棒了。將使用它_next time_ ...因爲我似乎終於找到了真正的缺陷 - 我無法設置超時的Internet查詢,因爲read_json函數不允許該選項。現在已經通過socket.setdefaulttimeout(...)解決了這個問題 - 我希望能夠解決這個不常發生的問題。但是,非常感謝您的幫助! – AltSheets

0

我想你的要求是一樣的,在這個下面的問題。 question on periodic restart of service file

我希望這能回答你的問題。

+0

非常感謝。 「看門狗」=是,這比定期通知看門狗「我還活着」更容易。將使用_next time_ ...因爲我似乎終於找到了真正的缺陷 - 我無法設置超時的Internet查詢,因爲read_json函數不允許該選項。現在已經通過socket.setdefaulttimeout(...)解決了這個問題 - 我希望能夠解決這個不常發生的問題。但是,非常感謝您的幫助! – AltSheets

相關問題