18 Punkte von givvemee 2026-01-20 | 6 Kommentare | Auf WhatsApp teilen

Beim Entwickeln tippt man unzählige Male Befehle wie lsof -i :3000 ein.
„Was benutzt diesen Port?“, „Ich glaube, ich habe den Server von vorhin nicht beendet ...“

ports-cli ist ein CLI-Tool, das alle aktuell offenen Ports zusammen mit Prozessnamen und Projektpfad übersichtlich anzeigt.

Hauptfunktionen

  • Alles auf einen Blick: Zeigt offene Ports, Prozessnamen und Projektpfade in Tabellenform an
  • Node.js-Projekterkennung: Liest den Namen aus package.json und zeigt statt node den tatsächlichen Projektnamen an
  • Filter für Benutzerprozesse: Mit der Option -u werden Systemprozesse ausgeschlossen, sodass nur die von mir gestarteten Prozesse angezeigt werden
  • Beenden: Mit ports bye 3000 wird der Prozess auf diesem Port sofort gekillt

Installation

brew tap givvemee/tap  
brew install ports-cli  

Verwendung

ports              # Alle lauschenden Ports anzeigen  
ports -u           # Nur von mir gestartete Prozesse  
ports bye 3000     # Prozess auf Port 3000 beenden  

Beispielausgabe

  
PORT     PROCESS                  PATH  
----     -------                  ----  
3000     my-app                   ~/Documents/GitHub/my-app  
5432     postgres                 -  
8080     test-server              ~/Documents/GitHub/test-server  

Nur für macOS, läuft als Bash-Skript leichtgewichtig und ohne zusätzliche Abhängigkeiten.

Feedback ist willkommen. :)

6 Kommentare

 
channprj 2026-01-26

Oh, da gibt es einige praktische Funktionen. 👍🏻

Im Fall von macOS kann man das auch ohne zusätzliche Installation mit dem folgenden Befehl einfach prüfen.
Wenn Sie ihn in ~/.zshrc einfügen, ist er direkt nutzbar.

(Zur Information teile ich das einmal!)

alias portcheck="printf "\033[4;37m%-15s %-8s %-20s %s\033[0m\n" "COMMAND" "PID" "PORT" "DIR"; sudo lsof -iTCP -sTCP:LISTEN -n -P | awk 'NR>1 {print $2, $1, $9}' | sort -u | while read pid cmd port; do dir=$(sudo lsof -p "$pid" -a -d cwd -F n 2>/dev/null | tail -1 | cut -c2-); printf "\033[1;32m%-15s\033[0m \033[1;36m%-8s\033[0m \033[1;33m%-20s\033[0m %s\n" "$cmd" "$pid" "$port" "$dir"; done"

 
givvemee 2026-01-27

Ah, Sie haben also einen portcheck-Alias erstellt und verwendet. Das ist auch eine gute Methode. Vielen Dank!

 
channprj 2026-01-27

Wegen eines Problems mit den doppelten Anführungszeichen teile ich es erneut.

alias portcheck='printf "\033[4;37m%-36s %-8s %-22s %s\033[0m\n" "COMMAND" "PID" "LISTEN" "CWD"; sudo lsof -nP -iTCP -sTCP:LISTEN -F pcn 2>/dev/null | awk '"'"'BEGIN{pid=cmd=name=""}/^p/{pid=substr($0,2)}/^c/{cmd=substr($0,2)}/^n/{name=substr($0,2);if(pid&&cmd&&name)print pid"\t"cmd"\t"name}'"'"' | sort -u | while IFS=$'"'"'\t'"'"' read -r pid cmd name; do dir=$(sudo lsof -n -p "$pid" -a -d cwd -F n 2>/dev/null | sed -n '"'"'s/^n//p'"'"' | tail -1); [ -z "$dir" ] && dir="-"; printf "\033[1;32m%-36.36s\033[0m \033[1;36m%-8s\033[0m \033[1;33m%-22s\033[0m %s\n" "$cmd" "$pid" "$name" "$dir"; done'

 
chcv0313 2026-01-22

Mich würde interessieren, worin die Vorteile gegenüber sudo netstat -tnlp liegen.

 
channprj 2026-01-26

Wie man beim Ausprobieren merkt, wird alles etwas übersichtlicher dargestellt.
Es gibt auch eine Filterfunktion, mit der sich nur die Prozesse anzeigen lassen, die der Benutzer selbst verwendet.

 
yshrust 2026-01-21

Oh, ich habe es direkt installiert und ausprobiert – es ist so einfach, dass es sich wirklich gut benutzen lässt!!
Vielen Dank, haha