我有一些
python Web服务,我正试图在Fedora 15机器上运行.它们由paster运行,启动它们的唯一区别是它们读取的配置文件.
这似乎非常适合systemd的实例化服务,但我希望能够将它们作为一个单元进行控制.需要两种服务的系统目标似乎是接近它的方法.启动目标会启动两个服务,但停止目标会使它们继续运行.
这是服务文件:
[Unit] Description=AUI Instance on Port %i After=syslog.target [Service] WorkingDirectory=/usr/local/share/aui ExecStart=/opt/cogo/bin/paster serve --log-file=/var/log/aui/%i deploy-%i.ini Restart=always RestartSec=2 User=aui Group=aui [Install] WantedBy=multi-user.target
这是目标文件:
[Unit] Description=AUI Requires=aui@5001.service Requires=aui@5002.service After=syslog.target [Install] WantedBy=multi-user.target
这种分组甚至可以用systemd吗?
解决方法
看看使用BindsTo选项将单元绑定在一起. systemd.unit(5)手册页描述如下:
BindsTo=
Configures requirement dependencies,very similar in style to
Requires=,however in addition to this behavior,it also declares that
this unit is stopped when any of the units listed suddenly disappears.
Units can suddenly,unexpectedly disappear if a service terminates on
its own choice,a device is unplugged or a mount point unmounted
without involvement of systemd.
这听起来应该做你想做的事情并将一个单元绑定到另一个单元,这样每当主设备停止从设备停止时,反之亦然,以便启动.
不要忘记您也可以使用Before / After来指定必要时应该开始的顺序.