在Linux中,使用 systemd
管理服務時,可以透過修改服務單元檔案來控制服務在哪些執行級別上啟動。執行級別(runlevel)是系統啟動時的一組服務集合,每個級別定義了一組應該啟動或停止的服務。
以下是如何設定服務(例如 nginx
)只在特定的執行級別(比如3和5)上啟動的步驟:
-
找到服務的單元檔案:
通常,服務的單元檔案位於/etc/systemd/system/
目錄下。對於nginx
,單元檔案可能是nginx.service
。 -
建立或編輯符號連結:
systemd
使用/etc/systemd/system/multi-user.target.wants/
(對於執行級別3)和/etc/systemd/system/graphical.target.wants/
(對於執行級別5)目錄下的符號連結來控制服務的啟動。你需要建立指向nginx.service
的符號連結。sudo ln -s /etc/systemd/system/nginx.service /etc/systemd/system/multi-user.target.wants/nginx.service sudo ln -s /etc/systemd/system/nginx.service /etc/systemd/system/graphical.target.wants/nginx.service
-
禁用在其他執行級別的啟動:
如果你不希望nginx
在其他執行級別上啟動,你需要刪除或禁用那些級別對應的符號連結。例如,如果不想在執行級別2上啟動nginx
,你可以執行:sudo rm /etc/systemd/system/multi-user.target.wants/nginx.service
注意:執行級別2通常用於無網路的多使用者文字模式,你可能不需要
nginx
在這個級別上執行。 -
重新載入
systemd
管理器配置:
修改符號連結後,需要重新載入systemd
的配置,使更改生效。sudo systemctl daemon-reload
-
檢查服務狀態:
使用systemctl
命令檢查服務的狀態,確保它只在你指定的執行級別上啟動。sudo systemctl is-enabled nginx
這個命令將顯示服務是否被設定為在執行級別3和5上啟動。
-
啟動或停止服務:
根據需要,你可以手動啟動或停止服務:sudo systemctl start nginx sudo systemctl stop nginx
-
重啟系統:
為了驗證服務是否按預期工作,你可以重啟系統,並檢查nginx
是否在指定的執行級別上啟動。sudo reboot
請注意,systemd
的目標(target)系統允許更靈活的服務管理。例如,multi-user.target
代表多使用者文字模式,graphical.target
代表圖形介面模式。你可以根據需要將服務連結到適當的目標。
綜上所述,systemd
的配置檔案 /etc/systemd/system/nginx.service
也可以直接編輯,以使用 [Unit]
下的 Wants
或 BindsTo
指令來指定服務依賴的其他服務或目標,但這通常不是必需的,除非你需要更復雜的依賴關係。