I got tired of checking which process was using my ports, so I built Portop
If you work with Linux long enough, you've probably seen this: bind: address already in use And then the usual routine starts. ss -tlnp lsof -i :8080 ps ... systemctl status ... docker ps ... These are great tools and I use them all the time. But on systems with lots of services running, I found myself doing this over and over again just to answer a very simple question: What is actually using…
Linux users often encounter the message "bind: address already in use" when working with the operating system. To quickly determine which process is utilizing a specific port, developer Padovan L. created Portop. Portop is an open-source terminal user interface (TUI) written in Go, which provides a real-time view of network ports and attempts to connect each socket to the process, service or container responsible for it.
The project began as a personal tool to manage the many services and ports that Padovan works with on a daily basis. Portop offers a straightforward interface, displaying a live table of network activity along with information about the socket and the associated process. Users can search, filter, inspect processes, open web services, copy details, and terminate processes using Portop.
Pressing Enter on a process reveals additional information such as the command line, executable, working directory, user, memory usage, thread count, and start time. Portop gathers this data by reading the kernel socket tables from /proc/net/tcp, /proc/net/tcp6, /proc/net/udp, and /proc/net/udp6, then mapping socket inodes back to processes through /proc/pid/fd.
Systemd and Docker associations are primarily derived from cgroups. For Docker containers, Portop can resolve container names through read-only calls to the Docker Engine Unix socket, when available. The tool does not require a background daemon to operate, and Linux permissions still apply. Running Portop with sudo provides additional visibility when needed.
Portop can also audit Docker Compose projects, comparing configured ports to those actually in use, and identify unused or conflicting ports. It can run as a TUI, output JSON for consumption by other tools, and includes 12 built-in themes along with customizable keybindings. The tool is currently available for Linux (amd64, arm64, armv7, armv6), macOS (Intel and Apple Silicon), and can be installed using a simple install script or by using Go to install the binary directly.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.