グループ全体ではなく単一のopenvpnプロセスのみをsystemdリロードするように設定する

グループ全体ではなく単一のopenvpnプロセスのみをsystemdリロードするように設定する

私はdebian stableといくつかのクライアントをサーバーインスタンスとして使用して、私のサーバー上で複数のopenvpnインスタンスを実行しています。インスタンスの1つが失敗した場合、systemdはプロセスグループ全体をシャットダウンして再起動するようです。

5月27日 12:09:44 tritone systemd[1]: openvpn@client_uk.service: 基本プロセスが終了しました。コード=終了、ステータス=1/FAILURE
5月27日 12:09:44 tritone systemd[1]: openvpn@client_uk.service デバイスが障害状態に移行しました。
5月27日12:10:01 tritone systemd [1]:client_rhodeへのOpenVPN接続を停止しています...
5月27日12:10:01 tritone systemd [1]:client_ukへのOpenVPN接続を開始しています...
5月27日12:10:01 tritone systemd [1]:client_ukraineへのOpenVPN接続を停止しています...
5月27日12:10:01 tritone systemd [1]:server_udpへのOpenVPN接続を停止しています...
5月27日 12:10:01 tritone systemd[1]: OpenVPN サービスを停止しています...
5月27日 12:10:01 tritone systemd[1]: OpenVPN サービス開始...
5月27日 12:10:01 tritone systemd[1]: OpenVPN サービスを開始します。
...

IMHO これは人気がなく、重複しています。失敗した単一のサービスを再起動すれば十分です。これは次のシステム構成です/etc/systemd/system/multi-user.target.wants/openvpn.service

[単位]
説明=OpenVPNサービス
以降 = network.target

[提供する]
種類=使い捨て
終了後に保持=はい
ExecStart=/bin/true
ExecReload=/bin/true
作業ディレクトリ=/etc/openvpn

[インストールする]
WantedBy =マルチユーザー。ターゲット

ExecReloadがに設定されている構成を見たことがありますが、kill -HUP $MAINPIDsystemctl statusに示されているように、私のサーバーも同じことをしているようです。

  Process: 5893 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)

だから私が理解していないのは、ExecReloadを構成するシステムが実際に異なることを言っている場合、このkillコマンドはどこで定義されていますか?そして、サービスが定義されていても、Type=oneshotなぜ再起動する必要がありますか?私が見ているファイルが正しいですか?

再起動コマンドはどのように見えるべきですか?プロセスが終了したと見なされるため、Killは機能しません。

編集する:私が見つけたのは、/lib/systemd/system-generators/openvpn-generatorそれにもかかわらず、いつ実行されるのか、それとも実行されるのかはまだ明確ではないということです。 selinuxの制限により実際にリンクが生成されないため、ジェネレータが失敗するようです。しかし、このファイルはinit用に使用されているようです。もしそうなら、なぜダミーファイルが生成されるのだろうか。/lib/systemd/system/[email protected]/etc/systemd/system/multi-user.target.wants/openvpn.service

答え1

CONFIGNAMEを構成ファイル名として使用している場合は、.conf試してみてください。

systemctl restart [email protected]

関連情報