- blogs:
- cles::blog

systemd から起動されているサービスを定期的に再起動する

systemd
から起動されているサービスを定期的に再起動したい。
安直な方法としては cron
とか timer を使って systemctl restart exmample.service
を定期的に実行してやれば済むというのは分かるのですが、ちょっとダサすぎるので、今回はもう少しスマートな解決方法を探ります。というわけで systemd.service のマニュアルを読んでみると、RuntimeMaxSec=
を使うとサービスの最大実行時間を秒単位で指定できることが分かりました。
RuntimeMaxSec=
Configures a maximum time for the service to run. If this is used and the service has been active for longer than the specified time it is terminated and put into a failure state. Note that this setting does not have any effect on Type=oneshot services, as they terminate immediately after activation completed. Pass "infinity" (the default) to configure no runtime limit.
例えばサービスの定義を以下のようにすると、RuntimeMaxSec=86400
によって 86400秒(=1日)ごとにサービスは終了するようになります。これに、Restart=always
を組み合わせると、サービスの終了時に自動的にサービスが起動されるようになるので、これらの合わせ技でサービスを定期的に再起動できることになります。
example.service
cron
や timer
と組み合わせるよりも定義が 1 箇所で完結できて便利です。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/12731
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . Word で数式がグレーアウトされていて挿入できないときは(3515)
3 . Windows 10 で勝手にログアウトされないようにする(3141)
4 . Firefox でパスワードが保存されるページとされないページの違い(2618)
5 . シャープの空気清浄加湿器のキュルキュル音は PTFE スプレーで(2414)