Ein CLI-Tool, das offene Ports und Prozesse auf einen Blick zeigt
(github.com/givvemee)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.jsonund zeigt stattnodeden tatsächlichen Projektnamen an - Filter für Benutzerprozesse: Mit der Option
-uwerden Systemprozesse ausgeschlossen, sodass nur die von mir gestarteten Prozesse angezeigt werden - Beenden: Mit
ports bye 3000wird 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
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
~/.zshrceinfü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"
Ah, Sie haben also einen
portcheck-Alias erstellt und verwendet. Das ist auch eine gute Methode. Vielen Dank!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'
Mich würde interessieren, worin die Vorteile gegenüber
sudo netstat -tnlpliegen.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.
Oh, ich habe es direkt installiert und ausprobiert – es ist so einfach, dass es sich wirklich gut benutzen lässt!!
Vielen Dank, haha