分岐システムサービスで簡単なExecStartPostを実行する

分岐システムサービスで簡単なExecStartPostを実行する

openvpnトンネルを確立するシステムサービスがあります。また、そのトンネルのポートを転送するbashスクリプトもあります。 openvpnの起動後にスクリプトを実行したいと思い、ExecStartPostを介してポート転送スクリプトを呼び出すことでこれを行うことができました。唯一の問題は、systemdサービスがType = forkingで、ExecStartPostもフォークする必要があるようですが、そうでないため、systemdサービスを再起動しようとすると永久に停止してポートを待っているようです。転送スクリプトデーモン。 systemdサービスでポート転送スクリプトを実行する他の方法はありますか?それとも、両方のサービスを同時に実行することは可能ですか(たとえば、あるサービスが別のサービスの後に厳密に実行され、再起動も同期的に発生します)。 VPNトンネルを起動したときにのみポート転送スクリプトを実行するので、自動的に実行したいと思います。問題のシステムサービスファイルは次のとおりです。

[Unit]
Description=OpenVPN connection to %i
Documentation=man:openvpn(8)
Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
After=network.target

[Service]
RuntimeDirectory=openvpn
PrivateTmp=true
KillMode=mixed
Type=forking
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid
#ExecStartPost=/etc/openvpn/portforward.sh
PIDFile=/run/openvpn/%i.pid
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
Restart=on-failure
RestartSec=3
ProtectSystem=yes
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw

[Install]
WantedBy=multi-user.target

ベストアンサー1

おすすめ記事