![有沒有辦法將兩個實例化的 systemd 服務當作一個單元來控制?](https://rvso.com/image/567638/%E6%9C%89%E6%B2%92%E6%9C%89%E8%BE%A6%E6%B3%95%E5%B0%87%E5%85%A9%E5%80%8B%E5%AF%A6%E4%BE%8B%E5%8C%96%E7%9A%84%20systemd%20%E6%9C%8D%E5%8B%99%E7%95%B6%E4%BD%9C%E4%B8%80%E5%80%8B%E5%96%AE%E5%85%83%E4%BE%86%E6%8E%A7%E5%88%B6%EF%BC%9F.png)
我嘗試在 Fedora 15 機器上運行幾個 python Web 服務。它們由 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
指定它們的啟動順序。