Unter MacOSX verwende ich Packer, um eine Vagrant-Box zu bauen, also muss ich sie ständig hochfahren und abreißen. Ich versuche zu "vagrant up" und erhalte den Standardfehler, da der Port verwendet wird:
"Vagrant kann die angegebenen Ports auf dieser VM nicht weiterleiten, da sie mit einer anderen Anwendung kollidieren, die diese Ports bereits überwacht. Der weitergeleitete Port an 8080 wird bereits auf dem Host-Computer verwendet."
Die Lösung scheint einfach genug: Ich muss nur den Prozess identifizieren, der Port 8080 offen hält, und den Prozess beenden, oder? Es ist nicht so leicht.
Wenn ich den Befehl ausführen:
nmap localhost -p 8080
Ich erhalte folgende Ausgabe:
PORT STATE SERVICE
8080/tcp open http-proxy
Wenn ich den folgenden Befehl ausführen:
top -o prt
Der höchste in 1360 verwendete Hafen
Wenn ich den folgenden Befehl ausführen:
netstat -tulpn | grep :8080
Ich erhalte:
netstat: n: unknown or uninstrumented protocol
Wenn ich den folgenden Befehl ausführen:
lsof -i :8080
Ich erhalte keine Ausgabe
Wenn ich meinen Computer neu starte, ist der Port jetzt verfügbar und ich kann jetzt "vagrant up".
Wie kann ich den Prozess unter Verwendung von Port 8080 beenden, damit ich mich ohne Neustart meines Computers aufhalten kann?
Das könnte helfen
lsof -n -i4TCP:8080
Die PID ist das zweite Feld in der Ausgabe.
Oder Versuche:
lsof -i -P
lsof -n -i4TCP:8080
PID ist das zweite Feld.
kill -9 PID
1.) Gehe zu/usr/local/bin/(Kann Befehl + Shift + g im Finder verwenden)
2.) mache die Datei mit dem Namen stop. Und fügen Sie den folgenden Code ein.
#!/bin/bash
touch temp.text
lsof -n -i4TCP:$1 | awk '{print $2}' > temp.text
pidToStop=`(sed '2q;d' temp.text)`
> temp.text
if [[ -n $pidToStop ]]
then
kill -9 $pidToStop
echo "Congrates!! $1 is stopped."
else
echo "Sorry nothing running on above port"
fi
3.) Datei speichern. Viel Spass !! Geh zum Terminal und schreibe Stop 8888 (oder einen beliebigen Port)
Sie können diesen Befehl (Stopport) von einer beliebigen Stelle im Verzeichnis schreiben.
Falls die oben akzeptierte Antwort nicht funktioniert hat, versuchen Sie die Lösung unten. Sie können es für Port 8080 oder für andere Ports verwenden.
Sudo lsof -i tcp:3000
Ersetzen Sie 3000 durch den gewünschten Port. Führen Sie den folgenden Befehl aus, um den Prozess zu beenden.
Sudo kill -9 PID
PID ist die Prozess-ID, die Sie beenden möchten.
Unten sehen Sie die Ausgabe von Befehlen auf dem mac Terminal.
Ich musste diesen Befehl ausführen
Sudo lsof -i :80 # checks port 8080
Dann habe ich bekommen
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
acwebseca 312 root 36u IPv4 0x34ae935da20560c1 0t0 TCP 192.168.1.3:50585->104.25.53.12:http (ESTABLISHED)
zeigen, welcher Dienst die PID verwendet
ps -ef 312
Dann habe ich das bekommen
UID PID PPID C STIME TTY TIME CMD
0 312 58 0 9:32PM ?? 0:02.70 /opt/Cisco/anyconnect/bin/acwebsecagent -console
So deinstallieren Sie den Cisco Web Security Agent
Sudo /opt/Cisco/anyconnect/bin/websecurity_uninstall.sh
kredite an: http://tobyaw.livejournal.com/315396.html
Es kann Cisco AnyConnect sein. Überprüfen Sie, ob /Library/LaunchDaemons/com.Cisco.anyconnect.vpnagentd.plist vorhanden ist. Dann entladen Sie es mit launchctl und löschen Sie es aus/Library/LaunchDaemons
Führen Sie Folgendes aus: nmap -p 8080 localhost
(Installieren Sie nmap mit MacPorts oder Homebrew, falls Sie es noch nicht auf Ihrem System installiert haben)
Nmap-Scanbericht für localhost (127.0.0.1)
Host ist in Betrieb (Latenz 0,00034s).
Andere Adressen für localhost (nicht gescannt): :: 1
PORT STATE SERVICE
8080/tcp offener http-Proxy
Ausführen: ps -ef | grep http-proxy
UID PID PPID C STIME TTY TIME CMD
640 99335 88310 0 12:26 pm ttys002 0: 00.01 grep http-proxy "
Führen Sie Folgendes aus: ps -ef 640
(ersetzen Sie 501 durch Ihre UID)
/System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/XPCServices/com.Apple.PerformanceAnalysis.animationperfd.xpc/Contents/MacOS/com.Apple.PerformanceAnalysis.animationperfd
Port 8080 auf Mac OSX wird von etwas verwendet - installiert mit XCode SDK
So erstellen Sie ein Skript:
pid=$(lsof -ti tcp:8080)
if [[ $pid ]]; then
kill -9 $pid
fi
Das Argument -t
macht die Ausgabe von lsof "terse", was bedeutet, dass nur die PID zurückgegeben wird.
Sie können den Aktivitätsmonitor auch verwenden, um den Prozess über den Port zu identifizieren und zu beenden.