GNU/Linux >> Linux の 問題 >  >> Linux

systemd サービスを定期的に再起動するように設定するにはどうすればよいですか?

ここで、少し回り道をしたとしても、エレガントに見える解決策を見ました。重要なアイデアは、別のを再起動するタイマーによってトリガーされるワンショット サービスを作成することです。 サービス。

タイマーの場合:

[Unit]
Description=Do something daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

ワンショットサービスの場合:

[Unit]
Description=Restart service

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl try-restart my_program.service

Ubuntu 16.04 LTS でのワンショット サービスの場合:

[Unit]
Description=Restart service

[Service]
Type=oneshot
ExecStart=/bin/systemctl try-restart my_program.service

このソリューションでは、一定の時間が経過した後だけでなく、特定の時刻にサービスを再起動する機能など、systemd のタイマーを活用できます。


systemd バージョン>=229 の場合、RuntimeMaxSec というオプションがあります。 、指定された期間実行された後にサービスを終了します。

例えば7 日ごとに再起動するには:

[Service]
Restart=always
RuntimeMaxSec=7d

私には、これは Type=notify を悪用するよりもエレガントに思えます と WatchdogSec .

systemd は、ベンダーが提供する systemd ユニット ファイルにディレクティブを追加および上書きするクリーンな方法を提供します。ドロップイン ユニットは man systemd.unit で説明されています。たとえば、パッケージによって提供される foo サービスを定期的に再起動する場合は、/etc/systemd/system/foo.service.d/periodic-restart.conf という名前のファイルを作成します。 .内容は上図の通りとなります。次に:

 systemctl daemon-reload
 systemctl restart foo

ステータス出力で報告されるため、ドロップイン ユニットがロードされたことを確認できます。

 systemctl status

最後に、systemctl show を検索して、ディレクティブが含まれていることを確認できます。 出力:

 systemctl show foo.service | grep RuntimeMax

systemctl show によって報告されたディレクティブ "RuntimeMaxUSec`

になります
Linux
  1. LinuxでSystemdサービスを作成する方法

  2. ネットワークサービスでStandardioを使用して単純なスクリプトを作成するようにSystemdを構成するにはどうすればよいですか?

  3. cPanel サーバーでサービスを再起動するにはどうすればよいですか?

  1. systemd サービスの出力をファイルにリダイレクトする方法

  2. systemd サービスを停止する方法

  3. systemd サービスを削除する方法

  1. LinuxでSystemctlを使用してSystemdサービスを管理する方法

  2. Dovecotをインストールして構成する方法

  3. Systemctlコマンドを使用してSystemdサービスを管理する方法