有沒有辦法將兩個實例化的 systemd 服務當作一個單元來控制?

有沒有辦法將兩個實例化的 systemd 服務當作一個單元來控制?

我嘗試在 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指定它們的啟動順序。

相關內容