>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
TypeScript

Como Parar de Procurar Processos via lsof e Organizar Suas Portas

Situação familiar: você inicia um servidor local e o terminal cospe um erro dolorosamente familiar Error: listen EADDRINUSE: address already in use :::3000. O worker de ontem não terminou corretamente, um processo em segundo plano travou, ou um container Docker está silenciosamente segurando o socket necessário.

PortPal — Gerenciador de Portas para Desenvolvedores

Normalmente, é aí que a rotina começa. Você abre o terminal, lembra da sintaxe do lsof -i :3000 no macOS ou do grep netstat -ano no Windows, copia o PID e digita kill -9. Se você tiver uma dúzia de microsserviços, o terminal se transforma em um cemitério de comandos repetitivos.

O projeto PortPal resolve esse pequeno mas persistente problema. É um painel de desktop leve que mostra portas ocupadas, identifica a stack e encerra processos redundantes com um único botão.

O Que Está Por Trás e Por Que Você Precisa Dele

A maioria dos utilitários similares são wrappers primitivos em torno de comandos do sistema ou arrastam um Electron pesado, consumindo um gigabyte de RAM apenas para exibir uma lista de cinco linhas.

Os criadores do PortPal seguiram um caminho mais agradável e construíram a aplicação em Tauri 2, Rust e React 19. Graças ao Rust, o backend mal consome CPU em segundo plano, e a janela nativa abre instantaneamente.

A ferramenta resolve várias tarefas do dia a dia:

  • Encontra portas locais travadas e extrai metadados do processo.
  • Reconhece o ambiente baseado no contexto de arquivos e portas padrão.
  • Ajuda a forçar a parada de um processo ou reiniciá-lo.
  • Visualiza conexões de rede entre serviços como um grafo.

Principais Funcionalidades

Reconhecimento de Projetos em Vez de Números Secos

Um monitor de sistema comum só vai te dizer o PID e o nome do binário (por exemplo, node ou python). Se cinco projetos Node.js diferentes estiverem rodando, distingui-los pela saída do terminal é impossível.

PortPal trabalha de forma mais inteligente. Ele não apenas olha para o número do socket mas também escaneia diretórios de trabalho. O programa procura arquivos de manifesto (package.json, Cargo.toml, go.mod) e combina o número da porta com ambientes populares de desenvolvimento:

3000  -> React / Next.js
5173  -> Vite
4200  -> Angular
8000  -> Django
5432  -> PostgreSQL
6379  -> Redis

Como resultado, o painel exibe cartões claros: você pode ver imediatamente que seu frontend está rodando na porta 5173 e o banco de dados está escutando na 5432.

Mapa Interativo de Conexões

O detalhe mais interessante da interface é o mapa topológico construído com a biblioteca D3.js.

Port Map — Topologia de Rede Interativa

Em vez de uma tabela plana, você obtém uma simulação física com nós. Os nós são coloridos de acordo com suas tecnologias: azul para bancos de dados, roxo para bundlers Vite, verde para backend Node.js. Os nós podem ser arrastados pela tela, ampliados com a roda do mouse, e links de rede ativos podem ser examinados em tempo real. Se você está desenvolvendo um sistema com múltiplos microsserviços, tal grafo ajuda a entender rapidamente quem está atualmente segurando uma conexão com quem.

Gerenciamento em Um Clique e Botão de Emergência

Cada processo tem um botão de encerramento ao lado. Clique na cruz — o processo termina instantaneamente, o socket é liberado.

Se uma porta está ocupada por um script que crashou e que o PortPal记住了, um botão de reinício permanece por perto. Ele executa o comando novamente em um terminal separado.

Na interface, as portas são divididas em dois grupos: processos de desenvolvimento e serviços do sistema. Encerar um serviço do sistema acidentalmente é mais difícil. E para casos em que você terminou seu dia de trabalho e quer fechar todo o zoológico de servidores locais rodando de uma vez, existe um botão Kill All para o grupo de Frameworks de Desenvolvimento.

Operação em Segundo Plano e Bandeja do Sistema

PortPal minimiza para a área de notificação. O ícone da bandeja muda de cor dependendo da presença de conflitos de porta. Enquanto a janela está fechada, uma thread em segundo plano registra eventos: quando um novo processo surgiu, qual socket foi liberado, e onde ocorreu um pico de tráfego. O histórico com todos os timestamps é armazenado em uma aba separada de logs.

Arquitetura e Stack

A stack técnica do projeto parece moderna:

Backend:      Rust (sysinfo + системные API сетевого стека)
Runtime:      Tauri 2
Frontend:     React 19 + TypeScript + Vite 7
Графика:      D3.js v7 (симуляция графов на силах)
Стили:        Vanilla CSS со стеклянными эффектами

Ao abandonar bibliotecas pesadas de componentes frontend e usar Webview nativo, a aplicação é leve e consome recursos mínimos durante a varredura constante de sockets.

Como Iniciar

Desenvolvedores publicam builds prontos na página de releases do repositório:

  • Para Windows, .msi e .exe estão disponíveis.
  • Para macOS, builds .dmg são preparados para chips Apple Silicon e processadores Intel.
  • Para Linux, existem pacotes .deb e o formato universal .AppImage.

Se você quiser construir o utilitário a partir do código-fonte ou adicionar suas próprias regras de detecção, você precisará de Rust versão 1.70 ou superior e Node.js 18+:

# Клонируем репозиторий
git clone https://github.com/wisher567/Portpal.git
cd portpal

# Ставим зависимости и запускаем в dev-режиме
npm install
npm run tauri dev

Em modo dev, hot reloading de componentes React via Vite funciona em paralelo com a compilação da parte em Rust.

Impressões Pessoais

O projeto é jovem, atualmente na versão 0.2, mas já parece uma ferramenta diária pronta para uso. A tabela básica de portas e os cartões funcionam rápido. O mapa D3.js inicialmente parece decorativo, mas ao depurar simultaneamente um API gateway, banco de dados e um par de clientes, prova ser genuinamente útil.

Desvantagens menores incluem o banco de dados limitado para reconhecimento automático de framework. Se você rodar um serviço customizado em uma porta não padrão como 9211, o PortPal vai mostrá-lo como um processo regular até você vincular o contexto manualmente. Mas como o projeto é open source sob licença MIT, adicionar à lista de assinaturas no código é direto.

Quem vai achá-lo útil: desenvolvedores web, engenheiros full-stack, e todos que regularmente gerenciam uma dúzia de microsserviços locais e estão cansados de memorizar comandos de limpeza de sockets.

Projetos relacionados