←→ Underneath: Background Apps · 所有 Mac 指南
如何查看 Mac 背景中正在執行的項目
你的 Mac 正在執行數百個你從未打開過的程序。大多數屬於 macOS。少數來自你安裝的 App,其中有些每次登入時都會再次啟動。以下說明如何找出它們。
簡短回答:打開活動監視器查看目前正在執行的項目,打開系統設定 › 一般 › 登入項目與延伸功能查看會自行啟動的項目。若要看完整的全貌,請查看 LaunchAgents 和 LaunchDaemons 檔案夾,或在終端機中執行 launchctl list。
1. 活動監視器:目前正在執行的項目
從應用程式 › 工具程式打開,或按下 ⌘ Space 並輸入「活動監視器」。
- 按一下記憶體標籤頁,並依記憶體欄位排序。用量最大的會排在最上方。
- 選擇顯示方式 › 我的程序,即可隱藏系統和其他使用者的程序。
- 選擇顯示方式 › 所有程序(階層式),即可看到哪個程序啟動了哪個程序。
- 連按兩下某個程序並打開打開的檔案和埠,即可看到它的路徑。
它看不到的:它不會告訴你程序為什麼在執行、重新開機後是否會回來,或是由哪個檔案啟動。像 com.adobe.acc.installer.v2 或 Google Chrome Helper (Renderer) 這樣的名稱提供的資訊很少。
2. 登入項目與延伸功能:會自行啟動的項目
打開系統設定 › 一般 › 登入項目與延伸功能。你會看到兩個列表:
- 登入時打開:你登入時會打開的 App。選取一個並按一下–即可移除。
- 允許在背景執行:擁有背景輔助程式(例如更新程式、同步代理程式或 VPN 監控程式)的 App 和開發者。用開關即可關閉。請參閱「允許在背景執行」是什麼意思。
它看不到的:它不會說明項目目前是否正在執行、佔用多少記憶體,或來自哪個檔案。有些項目只顯示開發者名稱。
3. LaunchAgents 和 LaunchDaemons 檔案夾
大多數會自行啟動的背景工作都是 launchd 工作。每一個都是一個小小的 .plist 檔案,告訴 macOS 要執行什麼以及何時執行。在 Finder 中選擇前往 › 前往檔案夾⋯(⇧⌘G),然後打開:
| 檔案夾 | 執行身分 | 啟動時機 |
|---|---|---|
~/Library/LaunchAgents | 你 | 你登入時 |
/Library/LaunchAgents | 每位使用者 | 任何使用者登入時 |
/Library/LaunchDaemons | root | Mac 開機時、登入之前 |
/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
什麼是正常的?
- 一個 App 有很多輔助程式。Chrome、Slack、VS Code 以及其他 Chromium 或 Electron App,會為每個標籤頁或視窗各執行一個程序。它們會隨 App 一起結束。
- 更新程式。Google、Microsoft、Adobe 和 Zoom 會安裝檢查更新的代理程式。它們通常很小,停止也安全,但 App 就不會自動更新。
- 雲端同步和 VPN。Dropbox、OneDrive 和 VPN 用戶端需要它們的輔助程式才能運作。停止它們就會停止同步或保護。
- 開發者工具。Homebrew 服務、Docker、資料庫和本機開發伺服器,在你關閉終端機後仍會繼續執行。
如果你不認得某個名稱,停止它之前,請先搜尋它的標籤或路徑中的開發者名稱。
常見問題
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 或開發者分組。它不會顯示目前正在執行的項目、記憶體用量,或是由哪個檔案啟動。