我有几个 python web 服务,想在 Fedora 15 机器上运行。它们由 paster 运行,启动它们的唯一区别是它们读取的配置文件。
这似乎很适合 systemd 的实例化服务,但我希望能够将它们作为一个单元进行控制。需要两个服务的 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
[email protected]
[email protected]
After=syslog.target
[Install]
WantedBy=multi-user.target
使用 systemd 可以实现这种分组吗?
答案1
看看如何使用BindsTo
选项将单元绑定在一起。systemd.unit(5)
手册页对此进行了如下描述:
绑定到=
配置需求依赖项,风格与 Requires= 非常相似,但除了此行为之外,它还声明当列出的任何单元突然消失时,此单元将停止。如果服务自行终止、设备被拔出或挂载点在未涉及 systemd 的情况下被卸载,单元可能会突然、意外地消失。
这听起来应该做你想做的事,将一个单元绑定到另一个单元,这样每当主单元停止时,从单元也会停止,反之亦然。
不要忘记,如果有必要,您还可以使用Before
/After
来指定它们的启动顺序。