Port Guard:封閉源碼 macOS 連接埠管理工具,把 lsof 查詢收進圖形介面

Port Guard 是一款免費的 macOS 連接埠管理工具,把 lsof 查連接埠佔用的命令列流程收進圖形介面;但它是封閉源碼的 v0.1.0、沒有條款頁與開發者資訊,下載前要先把信任成本算進去。

用 AI 摘要這篇文章:

本地開發時啟動服務,最常踩到的坑是「這個連接埠已經有人用了」。Node 跑過一輪沒正常結束、Docker 容器卡住、Python 的 Flask 或 FastAPI 沒有釋放連接埠,下次再 npm run dev 就跳出 Error: listen EADDRINUSEAddress already in use。前端、後端、資料庫、Redis、背景工作行程同時跑的時候更亂,3000、5173、8000、8080、5432 這些常用連接埠之間誰卡到誰,光靠記憶根本記不住。排解的標準動作是回到終端機,敲 lsof -i :3000 找出佔住連接埠的行程,記下第二欄的 PID,再用 kill -9 <PID> 結束它;不確定是哪個連接埠的時候,還要先把 lsof -iTCP -sTCP:LISTEN -P -n 整份列出來再肉眼搜尋。流程不複雜,但一天反覆幾次、又同時開著好幾個服務時,會讓人想直接有一個看得見全部連接埠狀態的視窗,點一下就把佔用的行程關掉。Port Guard 就是打這個痛點的 macOS 原生工具。

根據官網(devs.you/prot)的說法,Port Guard 是一款為 macOS 設計的連接埠管理工具,主打即時監控、行程視覺化、一鍵終止與選單列快速入口。它以原生應用程式的形式提供,支援 macOS 12.0 以上,免費下載。要先說清楚的是:它是封閉源碼軟體,沒有公開的原始碼或 GitHub 倉庫可以查驗,這篇文章能告訴你的是官網呈現了什麼、下載頁面實際提供哪些版本,而不是它在你機器上跑起來到底順不順、會不會回傳資料。這個邊界後面會反覆提到,因為對這類要結束行程、要守護連接埠的小工具,看不到原始碼是實實在在的決策因素。

把 lsof 命令列流程收進一個視窗

官網把功能拆成幾個區塊。即時監控會追蹤系統裡所有連接埠的狀態變化,當某個連接埠被佔用或釋放時可以收到通知;行程視覺化把連接埠與佔用它的程式對應起來,省去自己對照 PID 與程式名的步驟;批次終止可以一次清理多個佔用的連接埠,適合開發環境重設的情境;還有一個被官網稱為「安全守護」的機制,宣稱會自動識別可疑行程、阻擋未知程式佔用關鍵連接埠。除了最後這一項,前面三項對每天都會處理連接埠衝突的人來說都是合理且實際的需求。

「安全守護」需要特別拿出來講。在沒有原始碼的情況下,它用的是什麼判定規則、會不會誤判正常行程為可疑、誤判之後會做什麼動作,都只能從官網文字推測。一個會主動介入行程的工具,如果規則不公開,使用者等於是把自己機器上「哪些程式可以佔用連接埠」的判斷權交出去,卻無法回頭檢查它到底怎麼判斷的。舉例來說,你的開發伺服器或本機資料庫每次啟動都會佔住固定連接埠,這對任何正常開發流程都是基本動作,但一個把「未知程式佔用關鍵連接埠」當成風險訊號的規則,如果調得不好,很可能把你自己常用的服務也判定為可疑。這個風險確實存在,而且單從官網無法消除。

選單列入口是另一個值得提的設計。Port Guard 可以常駐在 macOS 頂端的選單列,點一下就能看到目前連接埠狀態、不需要把主視窗一直開著。對開發者來說這相當實用,因為連接埠衝突往往發生在你切換到別的視窗工作時,一個小小的常駐圖示比背景一直開著的視窗更不擋事。不過常駐程式也意味著它一直在背景跑、一直握著查詢連接埠與終止行程的權限,這點和上面談的封閉源碼風險是綁在一起的:常駐本身不是壞事,但常駐的對象要經得起檢驗。

比較能客觀對照的是它與 macOS 內建工具的關係。查連接埠佔用這件事,系統本來就有 lsofnetstat 與活動監視器的網路分頁能做。lsof -i :3000 列出佔用 3000 的行程、lsof -iTCP -sTCP:LISTEN -P -n 一次列出所有正在監聽的 TCP 連接埠與對應行程(-P 讓連接埠以數字顯示、-n 不要反向解析主機名稱,這兩個旗標在排查時幾乎必加)、netstat -anv 則能看連線狀態表;活動監視器裡也有圖形介面能看行程與網路活動。命令列的缺點是輸出密集、要自己組合旗標、也不會主動通知你某個連接埠剛被佔走。Port Guard 的價值在於把分散在命令列與系統監視器裡的資訊收進一個可點選的介面,再加上即時通知與多連接埠批次操作這兩個命令列比較費工的環節;它沒有做出一件系統本來做不到的事。對每天反覆處理連接埠衝突的開發者,這個便利是它在設計上想提供的;對一個月才遇到一次的人,內建工具其實夠用。如果你先前讀過 TechMoon 介紹 FindDiskKiller 這類 macOS 資源佔用監控工具,會發現 Port Guard 走的是同一條路:把系統管理員才知道的指令,換成一看就懂的儀表板,差別只在 FindDiskKiller 顧的是磁碟空間、Port Guard 顧的是網路連接埠。

Port Guard 官方儀表板截圖,顯示系統連接埠狀態總覽與即時監控畫面Pin
Port Guard 官方儀表板,列出系統連接埠狀態總覽。
Port Guard 官方行程列表截圖,顯示每個連接埠對應的行程與 PID 資訊Pin
Port Guard 行程列表,把連接埠與佔用它的行程對應起來。

從這兩張官方截圖可以看出 Port Guard 想呈現的資訊層次。儀表板把系統連接埠狀態一次攤開,讓你不用逐一查;行程列表則把「哪個行程佔了哪個連接埠」這組對應關係直接排出來,連 PID、行程名稱與佔用詳情都在同一個畫面,這正是命令列裡 lsof 輸出最讓人頭痛的地方:你拿到的是一串文字、要自己肉眼對照欄位,而 Port Guard 把它視覺化成可點選的列。要再次提醒的是,這兩張是官方提供的截圖,呈現的是工具打算提供的資訊,至於實際跑起來的反應速度、大流量時會不會卡、資料更新有沒有延遲,都還是要自己裝來看才知道。

下載前要先秤的幾個限制

這是這類封閉源碼小工具最需要停下來想的地方。官網唯一的下載點是 Port Guard_0.1.0_aarch64.dmg,也就是 Apple Silicon(M 系列晶片)的版本。雖然官網文字寫著「Apple Silicon 與 Intel 通用」,但實際上只有 aarch64 這一個安裝包能正常下載,x86_64 與 universal 這兩個常見命名連結打開的都不是安裝檔。換句話說,Intel Mac 的讀者目前下載不到對應版本,官網的「通用」文字與實際提供的安裝包對不起來。想裝之前先確認自己的 Mac 是不是 M 系列。檔名裡的版本號 0.1.0 也值得留意,這是非常早期的版本,成熟度、穩定度與已知問題都還沒有時間累積。

比平台與版本更該留意的是看不到的部分。Port Guard 沒有公開原始碼,官網也沒有任何條款頁、隱私政策或關於頁面,連開發者的公司名、聯絡方式都沒有揭露,對外只有 devs.you 這個域名,以及一個把分析腳本託管在 mean.orm.li 的 Umami 網站分析。Umami 本身比 Google Analytics 輕量,不用 cookie、只記錄匿名的造訪統計,所以你打開官網被記下的是網站層級的遙測,這在現代網站裡算相對節制的那一檔。問題在於應用程式本身:它安裝之後會不會回傳任何資料、那個「安全守護」會把哪些行程判定為可疑、判定結果會不會送出去,從官網完全看不出來,而它要的權限是終止行程與守護連接埠,剛好是最需要交代清楚資料流向的那一類操作。

另外它也不在 Mac App Store 上架,跳過了 App Store 的上架審核這一層把關,只能直接從開發者網站下載 dmg 自己裝。這裡要分清楚兩件事:App Store 上架審核和蘋果的公證(notarization)是兩條平行的路,沒走 App Store 不代表一定沒有公證;而 Port Guard 這個安裝包到底有沒有經過 Developer ID 簽章與公證,我沒有實際下載下來用 spctl 驗證,無法確認。如果它沒有簽章也沒有公證,macOS 的 Gatekeeper 很可能在第一次打開時擋下,你得手動到系統設定的隱私權與安全性分頁按「仍要打開」放行;如果它有公證,這個動作就不一定會出現。手動放行本身對很多開發者是日常,重點是放行的對象:一個沒有條款頁、開發者也查不到、又會常駐在選單列握著終止行程權限的程式。真正的風險在這個組合,而不在「沒走 App Store」這幾個字本身。對照 KeyStats 這類同為 macOS 選單列工具、但作者直接在 GitHub 放原始碼讓人查遙測做法的專案,Port Guard 在可查驗這一項上明顯落後;和 SmartHostsTool 這類網路相關工具相比也是同樣情況:能在 GitHub 看到實作的人,永遠比一個只有行銷頁的封閉程式更容易取得信任。授權狀態方面,因為沒有條款與授權文字可讀,能否用於商業環境、能否在公司機器上安裝,目前都是未知數,有合規顧慮的團隊建議先當成不能確認授權來處理。

誰該現在裝,誰該再等一下

實際把這些條件排下來,會得出兩種清楚的處理方式。如果你是 Apple Silicon 的 Mac 使用者、每天都被連接埠衝突煩到、又能接受「工具是封閉源碼 v0.1.0、開發者身分不明、沒有條款頁」這組前提,Port Guard 的儀表板在設計上比一直敲 lsof 直觀,它的即時通知與多連接埠批次終止是命令列比較費工的環節,可以下載來試,但要明白這是賭一個還沒有條款頁的早期產品會乖乖做事,裝在個人開發機上、別裝在有敏感資料的工作機上,是比較穩的折衷。

若你屬於另外幾種情況:用的是 Intel Mac、在意的是能查驗與能問責、機器上有不能外流的資料、或者部署環境需要明確的商用授權,那麼目前更穩的選擇是繼續用系統內建的 lsof -i :連接埠號 搭配活動監視器,或在終端機裝一個把 lsof 包起來的開源命令列小工具。這類把 lsof 包成命令的開源工具不少,多半就是一個會列出所有監聽連接埠、輸入連接埠號就能幫你終止行程的小程式,雖然沒有圖形介面,但原始碼看得到、可以自己審。命令列少了圖形介面的直觀,但每一行都可以查、可以複製貼上進自己的筆記,也不會多一個要結束行程權限的常駐程式。另外 macOS 上其實也有收費的連接埠管理圖形工具,差別是那些通常會把公司資訊、條款與退款政策寫清楚,Port Guard 免費這一點是優勢,但免費不能替代可查驗。Port Guard 的方向是對的,連接埠衝突確實值得有更好的工具;但對它現在這個版本,最務實的態度是放在追蹤清單裡,等它補上條款頁、公開原始碼來源、並放出 Intel 版本之後再回頭認真評估。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 762

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...