systemd中的一组单元的复杂重启

时间:2017-05-24 08:17:43

标签: linux systemd

我的应用程序包含haproxy单元和5个应用程序本身(app @ 1,app @ 2等)。

我有一个重启

的bash脚本
systemctl reload hapoxy
echo "disable server myapp/app-1" | socat stdio /var/run/haproxy-admin
systemctl restart 'app@1'
echo "enable server myapp/app-1" | socat stdio /var/run/haproxy-admin
echo "disable server myapp/app-2" | socat stdio /var/run/haproxy-admin
systemctl restart 'app@2'
echo "enable server myapp/app-2" | socat stdio /var/run/haproxy-admin
...
cache warm-up
other stuff

但是我想知道,有没有办法通过systemd运行重启?

P.S。我有myapp.target和那些单位和haproxy作为依赖项,但目标文件没有重启命令。

1 个答案:

答案 0 :(得分:1)

您可以使用PartOf=。来自man systemd.unit

  

PartOf =              配置类似于Requires =的依赖项,但仅限于停止和重新启动单元。当systemd停止或重新启动时   这里列出的单位,              动作传播到此单元。请注意,这是单向依赖 - 对此单元的更改不会影响列出的内容   单元。

因此,您可以创建一个新的单元文件,然后将要重新启动的所有内容放在一起“PartOf =”这个新单元。然后重新启动新设备将重新启动您想要的所有内容。

本主题在How to create a virtual systemd service to stop/start several instances together?

进行了更多讨论