是否可以在不重复或更改命令行的情况下将 systemd ExecStart 包装在垫片中?

是否可以在不重复或更改命令行的情况下将 systemd ExecStart 包装在垫片中?

假设我有一个现有的 systemd 服务:

# /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定义更改时都修改我的。

有什么合理的方法可以实现这一点吗?

相关内容