
同じシステムサービステンプレートの相互排他的なインスタンスを実行するより良い方法があるかどうか疑問に思います。
状況:私は私のラップトップと隣のワークステーション間の共同接続を介してトンネリングするためにSSHを使用しています。当然、一度に1つのトンネルしか実行できません。新しいトンネルを開くと、以前のトンネルでまだ実行されているすべてのインスタンスが早く閉じられます。
(これは次のとおりです。このユーザーが使用するVPNサービステンプレートインスタンスのユースケースタイプ)
とにかく[email protected]
ルールはsystemdが競合リストから現在のインスタンスを正しく削除しても(自分のリストから[email protected]
自動的に削除)、予想される結果はないようです(始める前に自動的に停止しません)。Conflicts=
[email protected]
[email protected]
[email protected]
現在、この恐ろしいデバイスを使用すると、私にとって効果的です。
ExecStartPre=-/bin/sh -c 'systemctl --user stop $$(systemctl --user list-units %p@\'*\'.service|gawk \'($$3~/^activ/)&&(!($$1~/%I/)){print $$1};\')'
ExecStart=/usr/bin/autossh -M 11111 -N -L24800:localhost:24800 %I
これは、このサービスの再配置(、をlist-units
返す)のすべてのインスタンスのリストを取得し、gawkを使用して現在のインスタンスではなくアクティブなインスタンスをフィルタリングし、そのインスタンスのみを停止するために使用されます(したがって、起動は開始前に停止します)。[email protected]
[email protected]
[email protected]
[email protected]
俺には効果的だが醜くて」より体系的なアプローチ「そうするにはどうすればいいのかわかりません。