コマンドラインを複製または変更せずにsystemd ExecStartをshimにラップできますか?

コマンドラインを複製または変更せずにsystemd ExecStartをshimにラップできますか?

既存のシステムサービスがあるとしましょう。

# /usr/lib/systemd/system/whatever.service
[Service]
ExecStart=/usr/bin/java -Dfoo=bar -Dbaz=qux -Xmeh=whatever -jar /path/to/whatever.jar arg1 arg2 ...

...プラグインを使用して実行中のラッパーに入れたいです。まったく同じコマンドが、最初にロックを獲得した場合にのみ該当します。私がよく知っている方法は、既存のアイテムを消去してExecStart次のことを繰り返すことです。

# /etc/systemd/system/whatever.service.d/needs-lock.conf
[Service]
ExecStart=
ExecStart=/usr/bin/with-lock lock-id /usr/bin/java -Dfoo=bar -Dbaz=qux -Xmeh=whatever -jar /path/to/whatever.jar arg1 arg2 ...

残念なことです。/usr/bin/with-lock lock-id本当に既存のサービスに追加したいです。needs-lock.confアップストリーム定義が変更されるたびにwhatever.service私を変更する必要はありません。

これを達成するための合理的な方法はありますか?

ベストアンサー1

おすすめ記事