Using systemd to periodically restart services
I have a custom application that my wife wrote for one of her personal projects. It turns out that the application crashes after 50-70 hours of uptime and both of us does not have the time or knowledge yet to debug that.
And that application is not that important either, it is just a website that displays various articles and pictures.
So in order to just push the problem under the rug, I just configured the system to restart the application ever 4th hour.
First, I create a service that we name “custom-application-restart“:
vi /etc/systemd/system/custom-application-restart.service
[Unit]
Description=restart custom application
[Service]
Type=oneshot
ExecStart=/bin/systemctl restart custom-application
Next, we have to add a timer-service, note that the name of the timer-service must be the exact name of the restart-service, except that we swap out “service” to “timer”:
vi /etc/systemd/system/custom-application-restart.timer
[Timer]
OnActiveSec=4h
OnUnitActiveSec=4h
[Install]
WantedBy=timer.target
Now, you should do the following:
systemctl daemon-reload
systemctl enable custom-application-restart.timer
systemctl start custom-application-restart.timer
Now, you should see your newly added timer-service in this list:
systemctl list-timers --all
Mon 2020-02-17 11:01:42 UTC 50min left Mon 2020-02-17 07:01:42 UTC 3h 9min ago custom-application-restart.timer custom-application-restart.service