在Linux系統中,“服務”(Service)可以理解爲在後臺持續運行的程序,它們負責提供特定功能,比如網頁服務(Nginx/Apache)、數據庫服務(MySQL)、郵件服務(Postfix)等。管理服務是Linux系統運維的基礎技能,包括啓動新服務、停止不需要的服務,以及檢查服務是否正常運行。

一、管理服務的前提:權限準備

大部分服務管理命令(如啓動、停止、重啓)需要管理員權限。因此,執行這些命令時,通常需要在命令前加 sudo(普通用戶)或切換到 root 用戶(需謹慎)。例如:

sudo systemctl start nginx  # 普通用戶執行,需密碼驗證

二、查看服務狀態:最常用的命令 systemctl status

systemctl status 是查看服務狀態的核心命令,能顯示服務是否運行、當前狀態(如啓動中、已停止、失敗)、進程ID、啓動時間等詳細信息。

語法

sudo systemctl status [服務名]

示例:查看Nginx服務狀態(假設已安裝Nginx):

sudo systemctl status nginx

輸出說明
- Active: active (running):服務正在運行(綠色爲正常狀態)。
- Main PID: 1234:服務主進程ID。
- CGroup:服務所屬的進程組信息。

如果服務未運行,狀態會顯示 inactive(停止)或 failed(啓動失敗),並提示錯誤原因。

三、啓動服務:systemctl start

要啓動一個服務,使用 systemctl start 命令。注意:服務名需與系統中實際配置的名稱一致(可通過後續“查看服務列表”命令確認)。

語法

sudo systemctl start [服務名]

示例:啓動Nginx服務:

sudo systemctl start nginx

驗證啓動:啓動後可通過 systemctl status nginx 再次確認狀態爲 active (running),或通過端口監聽驗證(如Nginx默認監聽80端口):

sudo netstat -tuln | grep 80  # 查看80端口是否被Nginx佔用

四、停止服務:systemctl stop

若需臨時停止服務(如維護時),使用 systemctl stop 命令。

語法

sudo systemctl stop [服務名]

示例:停止Nginx服務:

sudo systemctl stop nginx

驗證停止:執行 systemctl status nginx 後,狀態應顯示 inactive (dead)

五、重啓服務:systemctl restart

當服務配置修改後(如修改Nginx配置文件),需重啓服務使修改生效,使用 systemctl restart

語法

sudo systemctl restart [服務名]

示例:重啓Nginx服務:

sudo systemctl restart nginx

說明restart 會先停止服務,再重新啓動,適用於配置變更後。

六、查看服務列表:systemctl list-units

如果忘記服務名,可通過 systemctl list-units 列出系統中所有服務(或篩選特定類型)。

查看所有服務

sudo systemctl list-units --type=service
  • --type=service:僅顯示服務類型(而非目標、掛載點等)。
  • 輸出中 LOAD 列顯示服務配置是否已加載,ACTIVE 列顯示運行狀態。

查看運行中的服務

sudo systemctl list-units --type=service --state=running

七、檢查服務是否運行:systemctl is-active

快速判斷服務是否處於“活動”狀態(僅返回結果,無詳細信息),適合腳本或自動化場景。

語法

sudo systemctl is-active [服務名]

示例:檢查Nginx狀態:

sudo systemctl is-active nginx  # 輸出:active(服務運行)或 inactive(服務停止)

八、開機自啓設置(可選)

若需服務開機自動啓動,使用 systemctl enable;若需禁止開機自啓,使用 systemctl disable

語法

sudo systemctl enable [服務名]   # 開機自啓
sudo systemctl disable [服務名]  # 禁止開機自啓

示例:設置Nginx開機自啓:

sudo systemctl enable nginx

驗證開機自啓

sudo systemctl is-enabled nginx  # 輸出:enabled(已設置)或 disabled(未設置)

九、故障排查:查看服務日誌

若服務啓動失敗(如 systemctl status 顯示 failed),可通過 journalctl 查看詳細錯誤日誌,定位問題。

語法

sudo journalctl -u [服務名]  # -u 表示指定服務

示例:查看Nginx啓動失敗的日誌:

sudo journalctl -u nginx

常見錯誤
- 端口被佔用(如80端口被其他服務佔用)。
- 配置文件語法錯誤(需檢查 /etc/nginx/nginx.conf 等配置文件)。

總結

Linux服務管理的核心是 systemctl 命令,掌握以下基礎操作即可應對大部分場景:
- 查看狀態:systemctl status [服務名]
- 啓動服務:sudo systemctl start [服務名]
- 停止服務:sudo systemctl stop [服務名]
- 重啓服務:sudo systemctl restart [服務名]
- 開機自啓:sudo systemctl enable/disable [服務名]

建議多練習不同服務(如Nginx、MySQL、SSH)的管理,熟悉服務名和常見問題排查方法,逐步提升Linux系統運維能力。

小夜