←→ Underneath: Background Apps · 所有 Mac 指南

如何查看 Mac 背景中正在執行的項目

你的 Mac 正在執行數百個你從未打開過的程序。大多數屬於 macOS。少數來自你安裝的 App,其中有些每次登入時都會再次啟動。以下說明如何找出它們。

簡短回答:打開活動監視器查看目前正在執行的項目,打開系統設定 › 一般 › 登入項目與延伸功能查看會自行啟動的項目。若要看完整的全貌,請查看 LaunchAgents 和 LaunchDaemons 檔案夾,或在終端機中執行 launchctl list。

1. 活動監視器:目前正在執行的項目

從應用程式 › 工具程式打開,或按下 ⌘ Space 並輸入「活動監視器」。

它看不到的:它不會告訴你程序為什麼在執行、重新開機後是否會回來,或是由哪個檔案啟動。像 com.adobe.acc.installer.v2 或 Google Chrome Helper (Renderer) 這樣的名稱提供的資訊很少。

2. 登入項目與延伸功能:會自行啟動的項目

打開系統設定 › 一般 › 登入項目與延伸功能。你會看到兩個列表:

它看不到的:它不會說明項目目前是否正在執行、佔用多少記憶體,或來自哪個檔案。有些項目只顯示開發者名稱。

3. LaunchAgents 和 LaunchDaemons 檔案夾

大多數會自行啟動的背景工作都是 launchd 工作。每一個都是一個小小的 .plist 檔案,告訴 macOS 要執行什麼以及何時執行。在 Finder 中選擇前往 › 前往檔案夾⋯(⇧⌘G),然後打開:

檔案夾執行身分啟動時機
~/Library/LaunchAgents你你登入時
/Library/LaunchAgents每位使用者任何使用者登入時
/Library/LaunchDaemonsrootMac 開機時、登入之前
/System/Library/Launch…macOS受保護;請勿更動

檔案名稱通常就是工作的標籤,例如 com.google.keystone.agent.plist。用文字編輯器打開它,即可看到 ProgramArguments(執行什麼)、RunAtLoad(登入時啟動)和 KeepAlive(停止時重新啟動)。

它看不到的:從 macOS 13 起,App 也可以從自己的 App 套件內註冊背景工作,而不在這些檔案夾中留下任何檔案。這些工作只會出現在允許在背景執行中。

4. 終端機:完整列表

以下指令皆為唯讀,不會更改任何東西。

為你的使用者載入的所有 launchd 工作,含程序 ID(破折號表示未執行)和上次結束代碼:

launchctl list | grep -v com.apple

單一工作的詳細資訊,包括其 plist 路徑和狀態:

launchctl print gui/$(id -u)/com.example.label

在網路埠上監聽的程序(開發伺服器、同步工具):

lsof -nP -iTCP -sTCP:LISTEN

你自己的程序,依記憶體用量由大到小排列(RSS 單位為 KB):

ps -U $(id -u) -o pid,rss,etime,comm -m | head -30

macOS 所知道的所有登入項目和背景項目(需要管理者密碼;輸出很長):

sudo sfltool dumpbtm

什麼是正常的?

如果你不認得某個名稱,停止它之前,請先搜尋它的標籤或路徑中的開發者名稱。

常見問題

Mac 上執行很多程序是壞事嗎?

不是。一般的 Mac 會執行數百個程序,其中大多屬於 macOS。只需要找出少數幾個佔用大量記憶體或 CPU,或你不認得的程序。

為什麼活動監視器會顯示這麼多 Google Chrome Helper 程序?

Chrome 以及其他 Chromium 或 Electron App 會為每個標籤頁、延伸功能或渲染器各執行一個輔助程序。它們是 App 的一部分,App 結束時也會一起結束。

Mac 上的啟動代理程式存放在哪裡?

你自己的使用者在 ~/Library/LaunchAgents,所有使用者在 /Library/LaunchAgents,以 root 身分執行的全系統工作則在 /Library/LaunchDaemons。/System/Library 檔案夾屬於 macOS,並受到保護。

「系統設定」中的登入項目列表會顯示所有項目嗎?

不會。它會顯示登入時打開的 App 和有背景項目的 App,並依 App 或開發者分組。它不會顯示目前正在執行的項目、記憶體用量,或是由哪個檔案啟動。