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