corespotlightd CPU 使用率很高,先查是哪款 App 觸發
活動監視器裡 corespotlightd 一直排在前面,先看它是不是跟某個 App 的開啟、更新或匯入一起出現,高 CPU 只能說明它正在忙,不能據此認定啟動磁碟的 Spotlight 索引壞了,直接刪資料庫還可能丟掉排查線索,讓索引從頭再跑。
App 內容搜尋和檔案搜尋要分開看
Core Spotlight 讓 App 把自己的內容交給系統搜尋,文件 App 提交的搜尋項目,不一定對應 Finder 裡的一份普通檔案,Apple 的內容索引指南也說明了 App 怎樣隨著內容變化維護這些項目。
程序名稱給的是搜尋活動的線索,不能直接告訴我們是哪一個 App 引起的,如果忙的是 mds、mds_stores 或 mdworker,可以接著看 Spotlight 檔案索引排查,Core Spotlight 服務繁忙和 Spotlight 找不到檔案,是兩個需要分開驗證的現象。
在相同的工作狀態下比較兩次
在活動監視器中選擇「顯示方式 › 所有程序」,開啟 CPU 頁搜尋 corespotlightd,記下 CPU 用量,再看磁碟活動,比較時盡量保持同樣的工作狀態,不把正在匯入的 Mac 和睡眠後的 Mac 放在一起比。
- 記下高用量之前發生了什麼,例如 App 更新、新資料庫匯入或 macOS 更新。
- 匯入或同步還在推進時,先讓它完成,不同資料庫沒有統一的完成時限。
- 儲存工作,正常結束一個懷疑相關的 App,再觀察程序,條件允許時重新開啟同一個 App 做一次對照。
- 如果每次開啟它都會復發,檢查 App 更新和它官方提供的搜尋、索引設定,一次只改一個因素。
結束 App 後用量下降,能支持兩者有關,還不能證明資料庫損壞,背景作業也可能在視窗關閉後繼續,所以一次讀數沒變同樣不能排除這個 App,不要把一串無關服務全部強制結束。
持續繁忙時留下診斷資訊
選取程序,在活動監視器的「更多」選單裡使用「取樣程序」,Apple 的診斷指南說明它會收集三秒內的資訊,也提供「Spotlight 診斷」來收集搜尋相關資訊。
把 macOS 版本、App 版本、大致開始時間和能再次觸發高用量的動作一起保留,取樣裡有呼叫堆疊,但一個函式名稱不能直接定原因,傳送前檢查報告內容,透過私下管道交給 Apple 支援或相關 App 的開發者。
確認哪一種搜尋壞了,再決定修哪裡
如果 Spotlight 找不到普通檔案,Apple 的重建流程是在「搜尋隱私權」或「Spotlight 隱私權」裡按說明加入、再移除出問題的資料夾或磁碟,名稱隨 macOS 版本變化,這會主動重新索引,不是所有 corespotlightd 高 CPU 都適用的修復。
如果只是某個 App 的內容搜不到,先走它官方提供的修復流程,不把刪除隱藏的 Core Spotlight 資料庫、刪除 App 文件或關閉全部搜尋當作第一步,現象從系統更新後開始時,也可以結合 macOS 更新後變慢的排查,確認忙的是索引還是其他作業。
常見問題
corespotlightd 是惡意軟體嗎?
這個名稱與 macOS 搜尋活動有關,但名稱不能證明執行檔的身分,懷疑來源時要核對實際路徑和簽署資訊,不只憑標籤信任它,也不只憑標籤刪除檔案。
清快取能解決它的 CPU 用量嗎?
不一定,清快取不能告訴我們哪個 App 在提交搜尋內容,也解釋不了作業為什麼反覆發生,先對照 App 的行為並保留程序取樣,再選擇對應的修復。