要使用 `systemctl` 啟動單個服務,其中包含多個進程,你可以使用 Systemd 的 `template` 機制。以下是使用 Systemd 'template' 以創建一個可同時啟動多個進程的服務單元文件的過程: 1. 為你的服務創建一個 template 服務單元文件。服務單元文件通常 ...
要使用 systemctl
啟動單個服務,其中包含多個進程,你可以使用 Systemd 的 template
機制。以下是使用 Systemd 'template' 以創建一個可同時啟動多個進程的服務單元文件的過程:
-
為你的服務創建一個 template 服務單元文件。服務單元文件通常位於
/etc/systemd/system
目錄中。使用以下命令創建一個 template 服務單元文件:sudo touch /etc/systemd/system/[email protected]
註意
@
符號,它表示這是一個模板服務文件。根據實際服務名稱替換your-service
。 -
編輯 template 服務單元文件。使用文本編輯器(如
nano
、vim
)打開服務單元文件,併為該服務配置適當的設置。sudo nano /etc/systemd/system/[email protected]
添加以下內容,根據您的實際需求進行修改:
[Unit] Description=Description of your service instance %i After=network.target [Service] User=user-to-run-the-service-instance Group=group-to-run-the-service-instance ExecStart=/path/to/your/program --program-options instance-%i Restart=always [Install] WantedBy=multi-user.target
將
Description
、User
、Group
和ExecStart
替換為適當的值。請特別註意,我們添加了%i
標記。這將在啟動服務時替換為實例編號。 -
重新載入 Systemd 配置:
sudo systemctl daemon-reload
-
使用
systemctl
啟動具有多個進程的單個服務:sudo systemctl start your-service@1 your-service@2 your-service@3
在上述命令中,將
your-service
替換為您在步驟 1 中創建的模板服務文件的名稱,並使用所需的實例數量。這將啟動多個進程,每個進程都具有不同的實例編號。
現在,你已經配置了一個包含多個進程的服務,並使用 systemctl
將它們同時啟動。使用此方法,你可以根據需要動態地啟動、停止或重啟各個進程實例。
要在系統啟動時自動運行這些服務實例,請分別為每個指定實例使用如下命令:
sudo systemctl enable your-service@1
sudo systemctl enable your-service@2
sudo systemctl enable your-service@3
替換 your-service
並指定所需實例號。