使用Systemctl列出Linux服務

在Linux中,服務是在後台運行的程序。 服務可以按需啟動,也可以在啟動時啟動。

如果您使用Linux作為主要操作系統或開發平台,那麼您將處理不同的服務,例如webserver,ssh或cron。 在調試系統問題時,了解如何列出正在運行的服務或檢查服務狀態非常重要。

最近的大多數Linux發行版都使用systemd作為默認的初始化系統和服務管理器。

Systemd是一套用於管理Linux系統的工具。 它用於啟動計算機,管理服務,自動掛載文件系統,日誌事件,設置主機名和其他系統任務。

本文介紹了如何在Linux中列出服務。

列出Linux服務#

Systemd使用單元的概念,可以是服務,套接字,安裝點,設備等。單元是使用 ini 格式。 這些文件包括有關設備,其設置和要執行的命令的信息。 文件擴展名定義單位文件類型。 例如,系統服務單元文件具有 .service 延期。

systemctl 是一個命令行實用程序,用於控制systemd和管理服務。 它是systemd生態系統的一部分,默認情況下在所有系統上都可用。

要獲取所有已加載的服務單元的列表,請輸入:

sudo systemctl list-units --type service
UNIT          LOAD      ACTIVE SUB     DESCRIPTION                                                              
cron.service  loaded    active running Regular background program processing daemon 
...

輸出的每一行從左到右包含以下幾列:

  • UNIT -服務單位的名稱。
  • LOAD -有關單元文件是否已加載到內存中的信息。
  • ACTIVE -高級單位文件激活狀態,可以是活動,重新加載,非活動,失敗,激活,停用。 這是對 SUB 柱。
  • SUB -低級單位文件激活狀態。 該字段的值取決於單位類型。 例如,類型服務單元可以處於下列狀態之一:死,退出,失敗,不活動或正在運行。
  • DESCRIPTION -單位文件的簡短描述。

默認情況下,該命令僅列出已加載的活動單元。 要同時查看已加載但無效的廣告單元,請通過 --all 選項:

sudo systemctl list-units --type service --all

如果要查看所有已安裝的單位文件,而不僅僅是加載的文件,請使用:

sudo systemctl list-unit-files

顯示服務狀態號

要檢查服務狀態,請使用 systemctl status 命令:

sudo systemctl status <service_name>.service

哪裡 <service_name> 是您要檢查的服務單元的名稱。 例如,要確定nginx服務的當前狀態,請運行:

sudo systemctl status nginx.service

您可以省略後綴“ .service”。 systemctl status nginx 與…相同 systemctl status nginx.service

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-12-23 19:13:50 UTC; 5s ago
       Docs: man:nginx(8)
    Process: 3061052 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 3061063 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 3061064 (nginx)
      Tasks: 2 (limit: 470)
     Memory: 6.0M
     CGroup: /system.slice/nginx.service
             ├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             └─3061065 nginx: worker process

Dec 23 19:13:50 linuxize.dev systemd[1]: Starting A high performance web server and a reverse proxy server...

該命令將打印以下信息:

  • Loaded -服務單元是否已加載以及單元文件的完整路徑。 它還顯示是否在啟動時啟動了設備。
  • Active -服務是否處於活動狀態並正在運行。 如果您的終端支持顏色並且該服務已啟用並且正在運行,則點()和“活動(運行)”部分將以綠色打印。 該行還顯示了服務運行了多長時間。
  • Docs -服務文檔。
  • Process -有關服務流程的信息。
  • Main PID -服務PID。
  • Tasks -占單位的任務數和任務限制。
  • Memory -有關已用內存的信息。
  • CGroup -有關控制組的信息。

如果您只想檢查服務狀態,請使用 systemctl is-active 命令。 例如,要驗證nginx服務正在運行,可以運行:

systemctl is-active nginx.service
active

該命令將向您顯示服務狀態。 如果該服務處於活動狀態,則該命令返回退出狀態0,這在shell腳本中使用該命令時很有用。

結論#

我們已經向您展示了如何使用 systemctl 命令以列出Linux服務並檢查其狀態。

如果您有任何疑問或反饋,請在下面發表評論。

終奌站

Sidebar