web-dev-qa-db-ja.com

Systemdを使用してダウン時にサービスを再起動するにはどうすればよいですか?

私のサーバーでは、定期的にダウンするelasticSearchを使用していますが、その結果、ユーザーにとって500エラーになります。 Systemdがサービスを管理するためのリファレンスになったことを理解しています。

Systemdを使用して、Elastic Searchサービスがダウンしたときに自動的に再起動するにはどうすればよいですか?ダウンしているかどうかを確認せずに、自動的にではなく再起動する方法を見つけました。

14
Sébastien

Systemdサービスファイルを使用してサービスを開始している場合は、サービスを開始している場所からサービスファイルに以下の行を追加します

[Service]
Type=simple
ExecStart=here will be your service executable name
Restart=always    
RestartSec=0
  • Restart=

    サービスプロセスが終了したとき、強制終了したとき、またはタイムアウトに達したときにサービスを再起動するかどうかを設定します。次のいずれかの値を取ります:noon-successon-failureon-abnormalon-watchdogon-abort、またはalwaysno(デフォルト)に設定されている場合。

  • RestartSec=

    サービスを再起動する前にスリープする時間を設定します(Restart=で設定)。秒単位の単位なしの値を取ります。

これらの2つのオプションは、サービスファイルの[Service]タグの下にある必要があります。

21
PAL

私はこれに monit monitを使用しました。 askfedoraprojectへの投稿 これはプロセスを監視して自動的に再起動するための良い方法であると私に示唆しています。

これは、監視機能の適切な詳細構成、プロセスが失敗したかどうかを判断する方法、およびプロセスを回復するために実行するアクションを提供します。

1
rolinger

Systemctl-Linuxシステム用のシステムおよびサービスマネージャー

Systemdの基本:機能:1。起動時のシステムサービスの並列起動2.デーモンのオンデマンドアクティベーション3.依存関係ベースのサービス制御ロジック

* limited support at runlevel
* panic is not support panic command(systemctl no custom commands)
* systemctl can only communicate with services which are started by systemd
* sysd stop only running services
* system services don't inherit any context like HOME or PATH variable
* All services subject to default timeout of 5 minutes can be configured.These prevents from system to freeze in case of some application stop to respond.

Systemdユニット:サービス、パス、マウント、スナップショット、スワップ、タイマー、デバイスなどユニットタイプファイル拡張子説明サービスユニット.serviceシステムサービス。ターゲットユニット.targetsystemdユニットのグループ。 Automount unit.automountファイルシステムの自動マウントポイント。デバイスユニット.deviceカーネルによって認識されるデバイスファイル。マウントユニット.mountファイルシステムのマウントポイント。パスユニット.pathファイルシステム内のファイルまたはディレクトリ。スコープユニット.scope外部で作成されたプロセス。スライスユニット.sliceシステムプロセスを管理する階層的に編成されたユニットのグループ。スナップショットユニット.snapshotsystemdマネージャーの保存された状態。ソケットユニット.socketプロセス間通信ソケット。スワップユニット.swapスワップデバイスまたはスワップファイル。タイマーユニット.timersystemdタイマー。

ユニットファイルのファイルの場所:/ etc/systemd/system

会議ファイル:/etc/systemd/system.conf

Systemdは多くの機能を提供します。基本的には、Linuxシステムのすべてのリソースを制御して、多くの機能を提供できます。この記事では、システムサービスの管理に焦点を当てています。

詳細については: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/chap-managing_services_with_systemd

システムサービスの管理:systemctl説明systemctl startname.serviceサービスを開始します。 systemctl stopname.serviceサービスを停止します。 systemctl restartname.serviceサービスを再起動します。 systemctl try-restartname.serviceサービスが実行されている場合にのみサービスを再起動します。 systemctl reloadname.service構成をリロードします。 systemctl status name.service systemctl is-activename.serviceサービスが実行されているかどうかを確認します。 systemctl list-units --type service--allすべてのサービスのステータスを表示します。 systemctl説明systemctlenablename.serviceサービスを有効にします。 systemctl disablename.serviceサービスを無効にします。 systemctl status name.service systemctl is-enabledname.serviceサービスが有効かどうかを確認します。 systemctl list-unit-files --type serviceすべてのサービスを一覧表示し、それらが有効になっているかどうかを確認します。 systemctl list-dependencies--after指定されたユニットの前に開始するように命令されたサービスをリストします。 systemctl list-dependencies--before指定されたユニットの後に開始するように命令されたサービスをリストします。

0
frostcs