I have a simple systemd service that needs to be periodically restarted to keep its process from bugging out. Is there a configuration option for systemd services to periodically restart them? All of the Restart*
options seem to pertain to restarting the service when it exits.
相关问题
- Is shmid returned by shmget() unique across proces
- how to get running process information in java?
- Error building gcc 4.8.3 from source: libstdc++.so
- Why should we check WIFEXITED after wait in order
- Null-terminated string, opening file for reading
How about a crontab like
which would restart the service yourService at 3:30am each Sunday.
I saw a solution here that seemed elegant, if a bit roundabout. The key idea is to create a one-shot service triggered by a timer that restarts another service.
For the timer:
For the one-shot service:
For the one-shot service on Ubuntu 16.04 LTS:
This solution lets you leverage systemd's timers, including the ability to restart the service at a particular time of day, and not just after some amount of time has elapsed.
This may not have been present at the time the question was asked, but there is now an option called
RuntimeMaxSec
, which terminates the service after it has been running for the given period of time.e.g.
To me this seems more elegant than abusing
Type=notify
andWatchdogSec
.Just some alternate approaches to ultimately reach the same goal:
Yes, you can make your service to restart it periodically by making your service of
Type=notify
. Add this option in [Service] section of your service file along withRestart=always
and giveWatchdogSec=xx
, where xx is the time period in second you want to restart your service. Here your process will be killed by systemd after xx time period and will be restarted by systemd again. for eg.