如何查看Linux啟動服務列表 systemctl list-unit-files用法

要查看 linux 開機啟動了哪些服務,可使用 systemctl list-unit-files 命令;1. 直接運行 systemctl list-unit-files 可查看所有 unit 文件及其啟用狀態;2. 添加 –type service 參數僅查看服務類型的 unit 文件;3. 使用 grep 或 awk 過濾出 enabled 狀態的服務;4. 區分 systemctl list-unit-files(顯示配置狀態)與 systemctl list-units(顯示運行狀態)的不同作用;5. 通過 systemctl disable/enable 修改服務的開機啟動狀態并建議執行 daemon-reload;6. 使用 systemctl status 或 find 命令查找特定服務對應的 unit 文件。

如何查看Linux啟動服務列表 systemctl list-unit-files用法

想知道 linux 開機啟動了哪些服務?其實方法很簡單,systemctl list-unit-files 就能幫你搞定,而且用法靈活,滿足你不同的查看需求。

如何查看Linux啟動服務列表 systemctl list-unit-files用法

解決方案

systemctl list-unit-files 命令是 Systemd 系統管理工具的一部分,用于列出所有已安裝的 unit 文件及其啟用狀態。簡單來說,它會告訴你哪些服務被設置為開機啟動,哪些沒有。

如何查看Linux啟動服務列表 systemctl list-unit-files用法

最基本的用法就是直接運行:

systemctl list-unit-files

這會列出所有 unit 文件,包括 service、socket、target 等類型,并顯示它們的啟用狀態(enabled、disabled、Static、masked)。

如何查看Linux啟動服務列表 systemctl list-unit-files用法

如果你只想查看 service 類型的 unit 文件,可以加上 –type service 參數:

systemctl list-unit-files --type service

這樣輸出的結果就只包含服務相關的 unit 文件了。

有時候,你可能只想知道哪些服務是開機啟動的,可以結合 grep 命令過濾 enabled 狀態的行:

systemctl list-unit-files | grep enabled

或者,更精確地使用 awk 命令:

systemctl list-unit-files | awk '/enabled/{print $1}'

這條命令會只打印出狀態為 enabled 的 unit 文件的名稱。

此外,systemctl list-units 命令可以列出當前正在運行的 unit,但它和開機啟動的服務列表是不同的概念。開機啟動的服務可能正在運行,也可能因為各種原因沒有啟動。

如何理解 systemctl list-unit-files 的輸出結果?

systemctl list-unit-files 的輸出結果包含兩列:

  • 第一列是 unit 文件的名稱,例如 ssh.service、nginx.service 等。

  • 第二列是 unit 文件的啟用狀態,有以下幾種:

    • enabled: 開機啟動
    • disabled: 開機不啟動
    • static: 靜態的,不能被啟用或禁用,通常是作為其他服務的依賴
    • masked: 被屏蔽的,無法啟動

理解這些狀態可以幫助你更好地管理 Linux 系統的啟動服務。例如,如果你發現某個服務不應該開機啟動,但狀態卻是 enabled,就可以使用 systemctl disable 命令來禁用它。

如何禁用或啟用某個服務的開機啟動?

如果你想禁用某個服務的開機啟動,可以使用 systemctl disable 命令。例如,要禁用 nginx.service 的開機啟動,可以運行:

sudo systemctl disable nginx.service

需要注意的是,這個命令需要 sudo 權限。

相反,如果你想啟用某個服務的開機啟動,可以使用 systemctl enable 命令。例如,要啟用 ssh.service 的開機啟動,可以運行:

sudo systemctl enable ssh.service

禁用或啟用服務后,建議使用 systemctl daemon-reload 命令重新加載 Systemd 的配置,以確保更改生效。雖然大多數情況下會自動reload,但手動執行一次更保險。

systemctl list-unit-files 和 systemctl list-units 的區別是什么?

很多人容易混淆 systemctl list-unit-files 和 systemctl list-units 這兩個命令,它們的功能其實并不相同。

systemctl list-unit-files 列出的是所有已安裝的 unit 文件及其啟用狀態,它關注的是服務的配置信息,告訴你哪些服務被設置為開機啟動。

而 systemctl list-units 列出的是當前正在運行的 unit,它關注的是服務的運行狀態,告訴你哪些服務正在運行。

舉個例子,某個服務可能被設置為開機啟動(systemctl list-unit-files 顯示為 enabled),但由于某些原因,它并沒有成功啟動(systemctl list-units 中沒有顯示該服務)。反之,某個服務可能沒有被設置為開機啟動(systemctl list-unit-files 顯示為 disabled),但你可以手動啟動它,這時 systemctl list-units 中就會顯示該服務。

因此,這兩個命令分別提供了不同的信息,可以結合使用,更好地了解 Linux 系統的服務狀態。

如何查找某個服務對應的 unit 文件?

有時候,你可能知道一個服務的名稱,但不知道它對應的 unit 文件名。例如,你知道有一個名為 “Web Server” 的服務,但不知道它對應的 unit 文件是 nginx.service 還是 apache2.service。

這時,你可以使用 systemctl status 命令來查看服務的狀態信息,其中會包含 unit 文件的名稱。例如:

systemctl status nginx

在輸出結果中,你會看到類似這樣的信息:

● 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 ...

其中 nginx.service 就是該服務對應的 unit 文件名。

另外,你也可以使用 find 命令在 /lib/systemd/system/ 目錄下查找包含服務名稱的 unit 文件。例如:

sudo find /lib/systemd/system/ -name "*nginx*"

這條命令會查找所有文件名中包含 “nginx” 的 unit 文件。

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享