更新記錄/Vitals 1.9

Vitals 1.9:程序檢查器,適用於你Mac上的任何程序

Atta 🐬

Vitals創辦人

發佈於

簡短回答

Vitals 1.9讓Vitals既是活動監視工具,也是程序檢查器。按一下你Mac上的任何程序,它的面板就會顯示它所屬的App、程式碼簽署和授權、父程序和Launch Agent、完整的指令列,以及它自啟動以來用掉的CPU時間、記憶體、打開的檔案和監聽連接埠。App還有一張「詳細資訊」卡片,顯示版本、套件ID和Info.plist。所有這些都能儲存為CSV,同樣的詳細資訊也能在「終端機」裡用vitals process或透過MCP取得。

按一下任何程序來檢查它

「活動監視器」只給程序一個名稱和一個編號。在Vitals中按一下任何程序,表格旁就會打開一個面板,逐一列出各個部分,告訴你macOS能說出的關於它的一切。

  1. 01 按一下表格中的程序,或按一下一個App,再按一下它面板中的任何程序。
  2. 02 游標移到App面板中的程序上時,它的關閉標記旁會出現ⓘ。按一下它會打開同樣的詳細資訊。
  3. 03 按一下面板中的父程序或子程序,可以跟過去。
「記憶體」標籤頁中打開了com.docker.backend的面板:它的父程序、啟動它的App、版本、指令列和程式碼簽署 「記憶體」標籤頁中打開了com.docker.backend的面板:它的父程序、啟動它的App、版本、指令列和程式碼簽署

完整介紹請見程序檢查器頁面。

檢查任何程序的程式碼簽署和授權

一個叫Helper的程序什麼也說明不了,所以先看是誰建置了它。「安全性」部分會給出開發者的名稱和團隊ID,說明程序是否使用強化執行環境、是否在沙箱中執行,並列出它擁有的每項授權及其值。

帶團隊ID的名稱,是Apple已識別的開發者。「已簽署,無憑證」對Homebrew和你自己編譯的東西來說很正常。「未簽署」表示完全沒有簽署。

com.docker.backend的「安全性」部分:由Docker Inc簽署並帶團隊ID,強化執行環境已開啟,沒有沙箱,以及它的七項授權 com.docker.backend的「安全性」部分:由Docker Inc簽署並帶團隊ID,強化執行環境已開啟,沒有沙箱,以及它的七項授權

父程序、Launch Agent和指令列:它為什麼在執行

「身分」列出父程序和啟動它的App。如果是背景程序,「啟動」會列出它背後的Launch Agent或Launch Daemon,所以這個postgres原來是Homebrew服務sh.brew.postgresql@17。可執行檔的路徑和完整的指令列就在下面,環境摺疊在面板的最後。

postgres的面板:父程序是launchd,「啟動」下是Launch Agent sh.brew.postgresql@17,還有可執行檔和參數,已簽署但沒有憑證 postgres的面板:父程序是launchd,「啟動」下是Launch Agent sh.brew.postgresql@17,還有可執行檔和參數,已簽署但沒有憑證

CPU時間、記憶體峰值、打開的檔案和連接埠:它用掉了什麼

百分比只反映這一秒。面板則涵蓋程序的整個生命週期:分為使用者和系統的CPU時間、目前記憶體與它佔用過的最高值的對比、執行緒、打開的檔案、分頁移入量、讀取和寫入的Byte數。下面是它監聽的連接埠和它啟動的子程序,按一下就能打開。面板打開時,CPU和記憶體的圖表會持續更新。

com.docker.backend的「資源使用情況」:分為使用者和系統的CPU時間、峰值5%的記憶體、執行緒、打開的檔案、磁碟總量、三個監聽連接埠和一個子程序 com.docker.backend的「資源使用情況」:分為使用者和系統的CPU時間、峰值5%的記憶體、執行緒、打開的檔案、磁碟總量、三個監聽連接埠和一個子程序

每個App都有「詳細資訊」卡片,下面是它的程序

打開一個App,它的「詳細資訊」卡片會顯示版本、套件ID、架構、程式碼簽署、保護、由什麼啟動和安裝位置,按一下就能看到完整的Info.plist。

它的程序列在下面,每個都能打開自己的面板。幾秒前啟動的程序帶有「新」標記,「最近結束」保留最近十分鐘內結束的程序,所以你離開時當機的輔助程式或完成的建置仍然看得到。

Docker的面板:顯示版本、套件ID和簽署的「詳細資訊」卡片,有兩個程序的「最近結束」,以及七個程序,其中一個標記為「新」 Docker的面板:顯示版本、套件ID和簽署的「詳細資訊」卡片,有兩個程序的「最近結束」,以及七個程序,其中一個標記為「新」

儲存為CSV,或在「終端機」裡詢問

面板標題中的分享按鈕提供儲存為 CSV和拷貝為文字,其中包含Info.plist、授權、環境和程序。vitals process依名稱或PID給出同樣的詳細資訊。vitals top現在也能回看:給它一個時間,它就會告訴你當時哪些App用得最多。

$ vitals process node
$ vitals process 60412 --json
$ vitals process node --env --plist
$ vitals top --at 14:02
$ vitals top --from 14:00 --to 15:30

Vitals依小時保留兩天內的App資料,之後依天保留,回答會說明它涵蓋哪段時間。

向你的AI助理詢問任何程序

Claude、Codex和Cursor可以透過process_details工具向Vitals詢問任何程序,也能看到你歷史記錄中每個峰值背後的App。環境絕不會傳給它們,因為其中可能有金鑰。

  • 這個叫node的程序是什麼?它屬於哪個App?
  • 佔用連接埠3000的程序有簽署嗎?是什麼啟動了它?
  • 14:02的CPU峰值是哪些App造成的?

新增五個直欄,過濾也支援規則運算式

工具列中新增的直欄選單可以把PID、使用者、啟動時間、版本和路徑加到App表格。過濾現在也接受兩個斜線之間的規則運算式,例如/helper|agent/。

大家常問的問題

1.9是免費更新嗎?

是的。在Vitals中選擇「檢查更新項目」。其中的所有內容都包含在每種授權中。

為什麼有些程序顯示的詳細資訊較少?

macOS只向程序所屬的使用者顯示它的指令列、環境和累計總量。對於屬於macOS或其他帳號的程序,你仍能看到身分和程式碼簽署,CPU和記憶體則透過Vitals的選用輔助程式取得:在「設定」→「一般」中開啟完整系統指標。

它能告訴我某個程序是否安全嗎?

它給你判斷所需的事實:程式碼簽署、父程序、它在哪裡、它在做什麼。Vitals不會掃描惡意軟體。

它能為程序取樣或產生Spindump嗎?

不能。要看停止回應的App的堆疊追蹤,請打開活動監視器並按「取樣」。

1.9的所有內容

Vitals 1.9是免費更新。在Vitals中選擇「檢查更新項目」,或從vitalsmac.com下載。

購買Vitals $15 第一次使用Vitals? 在首發期間以$15終身使用,之後為$39,一次付清,14天內可退款。或一年更新$9。
  • 新功能 程序檢查器。 「活動監視器」只給程序一個名稱和一個編號。在 Vitals 中按一下任何程序,其餘的都由它的面板告訴你:它所屬的 App、程式碼簽署和團隊 ID、強化執行環境、沙箱和授權、父程序和 Launch Agent、完整的指令列和環境、打開的檔案、監聽連接埠和子程序。按一下父程序或子程序,可以跟過去。
  • 新功能 程序的整個生命週期,不只是這一秒。 自啟動以來的 CPU 時間,分為使用者和系統;目前記憶體與峰值的對比;執行緒、分頁移入量、讀取和寫入的 Byte 數;面板打開時還有 CPU 和記憶體的即時圖表。
  • 新功能 每個 App 都有一張「詳細資訊」卡片。 App 的面板現在會顯示版本、套件 ID、架構、程式碼簽署、保護、由什麼啟動、已執行時間和安裝位置,按一下就能看到完整的 Info.plist。
  • 新功能 剛啟動的,和剛結束的。 在 App 的面板中,按一下任何程序可打開它的詳細資訊。幾秒前啟動的程序帶有「新」標記,「最近結束」保留最近十分鐘內結束的程序以及它們執行了多久,所以當機的輔助程式仍然看得到。
  • 新功能 拷貝它,或儲存為 CSV。 任何面板都能拷貝為文字用於錯誤回報,或儲存為 CSV 檔案放到「下載項目」檔案夾,其中包含 Info.plist、授權、環境和程序。
  • 新功能 在「終端機」中和 AI 助理那裡也一樣。 vitals process 依名稱或 PID 給出同樣的詳細資訊,可輸出文字,也可用 --json。--env 加上環境,--plist 加上 Info.plist。Claude、Codex 和 Cursor 透過 process_details 工具取得這些資訊,但不包含環境,因為其中可能有金鑰。
  • 新功能 峰值背後的 App。 vitals top --at 14:02 或 --from 14:00 --to 15:30 會告訴你那段時間哪些 App 用得最多,讀取你歷史記錄的助理也能在每個峰值旁看到這些 App。
  • 改進 新增五個直欄。 PID、使用者、啟動時間、版本和路徑可以加入 App 表格,在工具列新增的「直欄」選單中選擇。
  • 改進 過濾支援規則運算式。 在兩個斜線之間輸入模式,例如 /helper|agent/。

更多