詞彙表/你會看到的程序

contactsd

又稱:聯絡人同步

簡短回答

contactsd是管理你聯絡人的macOS程序。它負責維護Mac上的聯絡人資料庫、回應每個查詢姓名、號碼或地址的App,並與「Internet帳號」中的帳號搭配運作,讓聯絡人與iCloud、Google、Exchange和其他伺服器保持同步。

讀取你通訊錄的不只有「聯絡人」App。「郵件」用它為寄件人顯示姓名,「訊息」和FaceTime用它顯示來電者,「行事曆」用它填入受邀者,Spotlight則用它尋找聯絡人。這些都會詢問contactsd,所以無論「聯絡人」App有沒有打開,它都會執行。

大部分時間它都處於閒置狀態,幾乎不耗資源。只有真正有工作時它才會忙起來:加入帳號後的第一次同步、大量輸入、轉換資料庫的macOS更新,或某個帳號不斷失敗又重試。最後一種通常就是它連續好幾個小時排在CPU列表前面的原因。

contactsd為什麼使用這麼多CPU

在你加入帳號、輸入vCard檔案或更新macOS之後,短暫飆升是正常的,會自行結束。contactsd正在讀取、合併和索引每一張名片,通訊錄很大時會需要一段時間。

一直不結束的飆升,通常表示某個帳號陷入了循環。contactsd向伺服器要求變更,收到無法處理的回覆,然後再次要求。Google和Exchange帳號比iCloud更常出現這種情況,通常發生在更改密碼、登入授權被撤銷,或伺服器拒絕某個群組或名片之後。數千張重複的名片(通常是同一個帳號被加入了兩次)也會以同樣的方式讓它一直很忙。

如何讓它平靜下來

先找出是哪個帳號。打開「系統設定」→「Internet帳號」,找找看有沒有要求你重新登入的帳號,然後打開「聯絡人」,檢查側邊欄中的帳號是否有警告。如果是某一個帳號的問題,就為它關閉「聯絡人」,等一分鐘後再開啟。contactsd會捨棄該帳號的本機副本並重新下載。

如果看不出是哪個帳號,就為iCloud以外的所有帳號關閉「聯絡人」,看看contactsd是否平靜下來,然後一次加回一個帳號。在活動監視器中結束contactsd只能撐一下:macOS會立刻再次啟動它,同一個帳號很快又會讓它忙起來。

如何判斷contactsd是否卡住了

正常運作的同步會漸漸安靜下來,陷入循環的同步每隔幾分鐘看起來都一樣。活動監視器和「終端機」可以告訴你是哪一種。

  1. 打開活動監視器,按一下「CPU」標籤頁,然後在搜尋欄位中輸入contacts。你會看到contactsd,通常還有AddressBookSourceSync,也就是負責與每個帳號的伺服器溝通的輔助程式。
  2. 觀察「% CPU」幾分鐘。數值逐漸降到零,代表同步快完成了。數值一直居高不下,或是規律地起伏,就是循環。
  3. 按一下「網路」標籤頁。循環通常會顯示AddressBookSourceSync一再收發少量資料,而不是一次大量下載。
  4. 想看細節的話,打開「終端機」並執行log stream --predicate 'process == "contactsd"'。反覆提到同一個帳號或伺服器的錯誤,指的就是需要修正的帳號。按下Control-C即可停止。

contactsd的正常用量與問題

正常:contactsd平時接近零,在「郵件」或「訊息」查詢姓名時短暫活動一下,加入帳號或輸入名片後會運作幾分鐘。macOS更新後,它把資料庫轉換為新格式時,可能會忙得比較久。

值得檢查:它連續好幾個小時都很忙、你什麼都沒做風扇卻轉起來,或「聯絡人」裡同一個人出現兩三次。常見原因如下:

  • 某個帳號需要你重新登入,原因是更改了密碼,或App專用密碼被撤銷。
  • 同一個Google或Exchange帳號加入了兩次,一次在「Internet帳號」中,一次透過某個App。
  • 舊的輸入作業留下數千張重複名片。在「聯絡人」中選擇「名片」→「尋找重複項目」即可合併。
  • 工作帳號的伺服器限制了同步頻率,所以每次嘗試都被拒絕,然後再重試。

contactsd把你的聯絡人存放在哪裡

資料庫位於你使用者的「資料庫」檔案夾中的~/Library/Application Support/AddressBook,Sources底下每個帳號各有一個檔案夾。不要為了解決同步問題而手動刪除或編輯它:在「Internet帳號」中為該帳號關閉再開啟「聯絡人」,就能安全地重建該帳號的副本,而只存在你Mac上的聯絡人不會受到影響。

在做任何較大的變更之前,先在「聯絡人」中選擇「檔案」→「輸出」→「聯絡人封存檔」來輸出備份。它會把所有帳號的每張名片存成一個檔案,之後可以再輸入。

大家常問的問題

Mac上的contactsd是什麼?

它是管理你聯絡人的macOS程序:負責維護聯絡人資料庫、回應查詢聯絡人的App,並讓聯絡人與iCloud、Google、Exchange和其他帳號同步。

contactsd的CPU用量為什麼很高?

如果只是短暫的,那是因為加入帳號、輸入資料或macOS更新後,它正在同步或索引。如果持續好幾個小時,那是因為某個帳號不斷失敗又重試,或通訊錄裡充滿重複項目。

contactsd是病毒嗎?

不是。它是macOS的一部分,由launchd以你自己的使用者帳號啟動。你無法移除它,也沒有理由這麼做。

AddressBookSourceSync是什麼?

contactsd用來將每個聯絡人帳號與其伺服器同步的輔助程式。如果它和contactsd一起忙碌,表示你的某個帳號正在同步;兩者之間的循環通常指向單一帳號。

為某個帳號關閉「聯絡人」會刪除我的聯絡人嗎?

它會從你的Mac移除該帳號的副本,而不會從伺服器移除。重新開啟後,聯絡人會再次下載。只儲存在「我的Mac上」的聯絡人不受影響。

相關詞條

想找比活動監視器更好的工具?請參閱Mac上最好用的活動監視器替代方案,或瀏覽詞彙表中的所有詞條。