Ошибка
EADDRINUSE: address already in use знакома, думаю, многим. Дальше обычно начинаются lsof, netstat, поиск PID и ручное завершение забытого процесса.Небольшой open-source-проект PortPal превращает всё это в наглядное десктопное приложение. Он показывает открытые TCP-порты, связанные процессы, PID, активные соединения и проект, из которого был запущен сервис.
Что умеет PortPal:
— обновлять список занятых портов в реальном времени;
— определять популярные сервисы и фреймворки: React, Vite, Angular, Django, PostgreSQL, Redis и другие;
— находить проект по
package.json, Cargo.toml, go.mod, pyproject.toml и другим маркерам;— завершать мешающий процесс одним кликом;
— перезапускать сервис, если удалось определить команду запуска;
— строить интерактивную карту соединений между локальными сервисами;
— сохранять события запуска, остановки и изменения сетевой активности;
— работать в системном трее.
Особенно зашла карта портов на D3.js. Она может пригодиться при локальной разработке микросервисов, когда одновременно работают API, frontend, базы данных, брокеры и несколько вспомогательных компонентов.
Приложение написано на Tauri 2: системная часть работает на Rust, интерфейс — на React и TypeScript. Заявлена поддержка Windows, macOS и Linux, лицензия — MIT.
При этом проект пока молодой: текущая версия — 0.2.0, а распознавание фреймворков во многом основано на стандартных номерах портов. В целом, удобный локальный инструмент, но не замена полноценному сетевому мониторингу. И с кнопкой
Kill All, разумеется, стоит обращаться аккуратно.Репыч на GitHub
@usr_bin_linux
