Monitoring
文件一段時間沒有被修改,如何重啟systemd服務?
我的設置有一個 systemd 服務,應該定期寫入文件。我想監控文件的變化,所以當它有一段時間沒有被修改時,我知道服務已經出錯了。我希望能夠在發生這種情況時自動重新啟動服務。
我曾嘗試使用路徑單元文件,但它只能在監視文件更改時啟動命令,反之則不行。
已經提出了相反的問題,當文件更改時需要重新啟動服務,但該解決方案似乎並不直接適用於我的情況。
雖然評論答案確實提出了一個很好的觀點,即在處理此類問題時應該將精力集中在哪裡(調試並嘗試確定它為什麼會掛起?),您問題的一個可能解決方案可能是設置一個systemd-timer,它會在您希望檢查該文件的任何時間間隔觸發,並讓它執行一個腳本來執行您的測試和操作。可能類似於(如果您使用 1 小時作為間隔):
定時器
[~]# cat /etc/systemd/system/checkhung.timer [Unit] Description=Check if file not modified in a while and restart service [Timer] OnActiveSec=60min OnUnitActiveSec=60min
服務
[~]# cat /etc/systemd/system/checkhung.service [Unit] Description=Check if file not modified in a while and restart service [Service] Type=oneshot ExecStart=/usr/local/bin/checker.sh
腳本
[~]# cat /usr/local/bin/checker.sh #!/bin/bash if [[ $(find /path/to/the/file.txt -mmin +60) ]] then /usr/bin/systemctl restart my-service.service fi
請注意,我尚未對此進行測試,因此可能需要進行一些調整。