Come Smettere di Cercare Processi con lsof e Riordinare le Tue Porte
Situazione familiare: avvii un server locale e il terminale ti restituisce un errore dolorosamente familiare Error: listen EADDRINUSE: address already in use :::3000. Il worker di ieri non è terminato correttamente, un processo in background si è bloccato, oppure un container Docker sta silenziosamente tenendo occupato il socket richiesto.

Di solito, a questo punto inizia la routine. Apri il terminale, ricordi la sintassi lsof -i :3000 su macOS o grep netstat -ano su Windows, copi il PID e digiti kill -9. Se hai una dozzina di microservizi, il terminale si trasforma in un cimitero di comandi ripetitivi.
Il progetto PortPal risolve questo piccolo ma persistente problema. È una dashboard desktop leggera che mostra le porte occupate, identifica lo stack e termina i processi ridondanti con un solo pulsante.
Cosa C'è Sotto il Cofano e Perché Ti Serve
La maggior parte delle utility simili sono o wrapper primitivi attorno a comandi di sistema, oppure trascinano dietro pesanti Electron, consumando un gigabyte di RAM solo per mostrare una lista di cinque righe.
I creatori di PortPal hanno scelto una strada più piacevole e hanno costruito l'applicazione su Tauri 2, Rust e React 19. Grazie a Rust, il backend consuma a malapena CPU in background e la finestra nativa si apre istantaneamente.
Lo strumento risolve diversi compiti quotidiani:
- Trova le porte locali bloccate ed estrae i metadati dei processi.
- Riconosce l'ambiente basandosi sul contesto dei file e sulle porte predefinite.
- Aiuta a fermare forzatamente un processo o riavviarlo.
- Visualizza le connessioni di rete tra i servizi come un grafo.
Funzionalità Principali
Riconoscimento dei Progetti Invece di Numeri Asciutti
Un normale monitor di sistema ti dirà solo il PID e il nome del binario (ad esempio node o python). Se cinque diversi progetti Node.js sono in esecuzione, distinguerli dall'output del terminale è impossibile.
PortPal lavora in modo più intelligente. Non si limita a guardare il numero del socket, ma scansiona anche le directory di lavoro. Il programma cerca i file manifest (package.json, Cargo.toml, go.mod) e abbina il numero della porta con gli ambienti di sviluppo più diffusi:
3000 -> React / Next.js
5173 -> Vite
4200 -> Angular
8000 -> Django
5432 -> PostgreSQL
6379 -> Redis
Di conseguenza, il pannello mostra schede chiare: puoi vedere immediatamente che il tuo frontend è in esecuzione sulla porta 5173 e il database è in ascolto sulla 5432.
Mappa Interattiva delle Connessioni
Il dettaglio più interessante dell'interfaccia è la mappa topologica costruita con la libreria D3.js.

invece di una tabella piatta, ottieni una simulazione fisica con nodi. I nodi sono colorati in base alle loro tecnologie: blu per i database, viola per i bundler Vite, verde per il backend Node.js. I nodi possono essere trascinati sullo schermo, ingranditi con la rotella del mouse, e i link di rete attivi possono essere esaminati in tempo reale. Se stai sviluppando un sistema con più microservizi, un tale grafo aiuta a capire rapidamente chi sta attualmente tenendo una connessione con chi.
Gestione con un Clic e Pulsante di Emergenza
Accanto a ogni processo c'è un pulsante di terminazione. Clicca sulla croce — il processo termina istantaneamente, il socket viene liberato.
Se una porta è occupata da uno script andato in crash che PortPal ha memorizzato, nelle vicinanze rimane un pulsante di riavvio. Esegue nuovamente il comando in un terminale separato.
Nell'interfaccia, le porte sono divise in due gruppi: processi di sviluppo e servizi di sistema. Terminare accidentalmente un servizio di sistema è più difficile. E per i casi in cui hai finito la tua giornata lavorativa e vuoi chiudere tutto lo zoo di server locali in esecuzione in una volta, c'è un pulsante Kill All per il gruppo Dev Frameworks.
Funzionamento in Background e System Tray
PortPal si minimizza nell'area di notifica. L'icona nel tray cambia colore a seconda della presenza di conflitti di porta. Mentre la finestra è chiusa, un thread in background registra gli eventi: quando è comparso un nuovo processo, quale socket è stato liberato, e dove si è verificato un picco di traffico. La cronologia con tutti i timestamp è archiviata in una scheda separata dei log.
Architettura e Stack
Lo stack tecnico del progetto si presenta moderno:
Backend: Rust (sysinfo + системные API сетевого стека)
Runtime: Tauri 2
Frontend: React 19 + TypeScript + Vite 7
Графика: D3.js v7 (симуляция графов на силах)
Стили: Vanilla CSS со стеклянными эффектами
Abbandonando le pesanti librerie di componenti frontend e usando Webview nativo, l'applicazione è leggera e consuma risorse minime durante la scansione costante dei socket.
Come Avviare
Gli sviluppatori pubblicano build pronte nella pagina delle release del repository:
- Per Windows, sono disponibili
.msie.exe. - Per macOS, le build
.dmgsono preparate per chip Apple Silicon e processori Intel. - Per Linux, ci sono pacchetti
.debe il formato universale.AppImage.
Se vuoi costruire l'utility dal codice sorgente o aggiungere le tue regole di rilevamento, avrai bisogno di Rust versione 1.70 o superiore e Node.js 18+:
# Клонируем репозиторий
git clone https://github.com/wisher567/Portpal.git
cd portpal
# Ставим зависимости и запускаем в dev-режиме
npm install
npm run tauri dev
In modalità dev, l'hot reloading dei componenti React tramite Vite funziona in parallelo con la compilazione della parte Rust.
Impressioni Personali
Il progetto è giovane, attualmente alla versione 0.2, ma già si presenta come uno strumento quotidiano pronto all'uso. La tabella delle porte base e le schede funzionano velocemente. La mappa D3.js inizialmente sembra decorazione, ma quando si esegue il debug simultaneo di un API gateway, un database e un paio di client, si rivela genuinamente utile.
Svantaggi minori includono il database limitato per il riconoscimento automatico dei framework. Se esegui un servizio personalizzato su una porta non standard come 9211, PortPal lo mostrerà come un processo normale finché non associ manualmente il contesto. Ma poiché il progetto è open source con licenza MIT, aggiungere alla lista delle firme nel codice è semplice.
Chi lo troverà utile: sviluppatori web, ingegneri full-stack, e tutti coloro che regolarmente gestiscono una dozzina di microservizi locali e sono stanchi di memorizzare comandi di pulizia dei socket.
Progetti correlati