最簡單的方式是透過檔案存放的路徑來過濾。
透過路徑過濾 (最準確)
系統內建的服務通常放在 /lib/systemd/system/,而使用者自定義或第三方軟體安裝的服務則放在 /etc/systemd/system/。你可以執行以下指令列出這些非系統預設的服務:
ls /etc/systemd/system/*.service
如果你想看到這些服務目前的執行狀態,可以結合 systemctl 指令:
systemctl list-units –type=service –all | grep -Ff <(ls /etc/systemd/system/*.service | xargs -n 1 basename)
使用 systemctl 指令篩選
如果你想查看所有「已啟用」(Enabled) 且非預設狀態的服務,可以使用:
systemctl list-unit-files –type=service –state=enabled
這個列表雖然包含了一些系統啟用的服務,但大部分你手動設定或第三方套件(如 Nginx, Docker, MySQL)安裝的服務都會出現在這裡。
過濾掉系統關鍵路徑
另一種方式是列出所有載入的服務,但排除掉存放在系統目錄 (/lib/…) 的部分:
systemctl list-units –type=service –no-pager | grep -v “/lib/systemd/system”
檢查服務內容
當你找到非系統服務後,建議檢查其檔案內容來確認它執行的指令與路徑,這對搬移伺服器非常有幫助:
cat /etc/systemd/system/你的服務名稱.service
通常你會在內容中看到 ExecStart,這會告訴你該服務實際上是執行哪一個程式或腳本。
需要我幫你寫一個指令,直接列出這些自定義服務指向的程式路徑嗎?