Comment puis-je tuer tout processus utilisant le port 8080 afin de pouvoir vagabonder?

93

Sur MacOSX, j'utilise Packer pour créer une boîte Vagrant, donc je dois constamment la remonter et la démolir. J'essaie de `` vagabonder '' et je reçois l'erreur standard car le port est en cours d'utilisation:

"Vagrant ne peut pas transférer les ports spécifiés sur cette machine virtuelle, car ils entreraient en collision avec une autre application qui écoute déjà sur ces ports. Le port transféré vers 8080 est déjà utilisé sur la machine hôte."

La solution semble assez simple: j'ai juste besoin d'identifier le processus qui maintient le port 8080 ouvert et de tuer ce processus, non?. Ce n'est pas si facile.


Si j'exécute la commande:

nmap localhost -p 8080

Je reçois la sortie suivante:

PORT     STATE SERVICE
8080/tcp open  http-proxy

Si j'exécute la commande suivante:

top -o prt

Le port le plus élevé utilisé en 1360


Si j'exécute la commande suivante:

 netstat -tulpn | grep :8080

Je reçois:

netstat: n: unknown or uninstrumented protocol

Si j'exécute la commande suivante:

lsof -i :8080

Je ne reçois aucune sortie


Si je redémarre mon ordinateur, le port est maintenant disponible et je peux maintenant «vagabonder».

Comment puis-je tuer tout processus utilisant le port 8080 afin de pouvoir vagabonder sans redémarrer mon ordinateur?

Jason Curran
la source

Réponses:

164

Cela pourrait aider

lsof -n -i4TCP:8080 

Le PID est le deuxième champ de la sortie.

Ou essayez:

lsof -i -P
Mark Setchell
la source
Merci d'avoir essayé, mais j'ai déclaré dans ma question que je ne recevais aucun résultat de la commande lsof.
Jason Curran
J'ai ajouté une autre possibilité.
Mark Setchell
Avez-vous une imprimante HP LaserJet? blog.hgomez.net/blog/2010/09/25/…
Mark Setchell
3
Merci Mark! Pour une raison quelconque, après le redémarrage de mon ordinateur, les commandes lsof ne produisaient rien, et maintenant elles le sont. Maintenant, les 3 commandes lsof fonctionnent et je peux identifier l'identifiant du processus et le tuer avec: sudo kill -9 000 ... Où 000 est l'identifiant du processus. Le nom du processus est "VBoxHeadless". Si j'obtiens plus d'informations sur les raisons pour lesquelles cela ne fonctionnait pas auparavant, je ferai un rapport. FYI: Je n'ai pas d'imprimante connectée.
Jason Curran
Essayez sudo lsof -n -i4TCP:8080de récupérer les processus appartenant à root.
mpelzsherman
90

Solution rapide et rapide:

lsof -n -i4TCP:8080

PIDest le deuxième champ. Ensuite, tuez ce processus:

kill -9 PID

Solution moins rapide mais permanente

  1. Aller à /usr/local/bin/ (Peut utiliser la commande + shift + g dans le Finder)

  2. Créez un fichier nommé stop. Collez-y le code ci-dessous:

#!/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
rm temp.text
  1. Enregistrez ce fichier.
  2. Rendre le fichier exécutable chmod 755 stop
  3. Maintenant, allez au terminal et écrivez stop 8888(ou n'importe quel port)
Ronak Kothari
la source
4
J'ai essayé la solution permanente mais j'ai obtenu «Autorisation refusée» en essayant d'exécuter le script. Résolu par la première exécution chmod 755 stop.
nomadoda
32

Dans le cas où la réponse acceptée ci-dessus ne fonctionne pas, essayez la solution ci-dessous. Vous pouvez l'utiliser pour le port 8080 ou pour tout autre port.

sudo lsof -i tcp:3000 

Remplacez 3000 par le port de votre choix. Exécutez la commande ci-dessous pour tuer ce processus.

sudo kill -9 PID

Le PID est l'ID de processus que vous souhaitez supprimer.

Vous trouverez ci-dessous la sortie des commandes sur Mac Terminal.

Sortie de commande

Akshay Thorve
la source
1
J'essaierais d'abord de tuer régulièrement (pas -9). L'option -9 peut entraîner une fermeture incorrecte du socket. Le processus peut être tué mais un autre auditeur bifurquera à sa place.
stackPusher
6

Pour créer un script:

pid=$(lsof -ti tcp:8080)
if [[ $pid ]]; then
  kill -9 $pid
fi

L' -targument rend la sortie de lsof "laconique", ce qui signifie qu'il ne renvoie que le PID.

voutasaurus
la source
1
vous pouvez le faire fonctionner aussi qui prend $ port
mebada
Enfin une solution qui récupère directement le PID. Merci mec, devrait être la bonne réponse à ce fil
Olympiloutre
3

J'avais besoin d'exécuter cette commande

sudo lsof -i :80 # checks port 8080

Puis j'ai

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)

montrer quel service utilise le PID

ps -ef 312

Puis j'ai ça

  UID   PID  PPID   C STIME   TTY           TIME CMD
    0   312    58   0  9:32PM ??         0:02.70 /opt/cisco/anyconnect/bin/acwebsecagent -console

Pour désinstaller l'agent de sécurité Web Cisco, exécutez

sudo /opt/cisco/anyconnect/bin/websecurity_uninstall.sh

crédits à: http://tobyaw.livejournal.com/315396.html

mjabadilla
la source
2

Cela peut être Cisco AnyConnect. Vérifiez si /Library/LaunchDaemons/com.cisco.anyconnect.vpnagentd.plist existe. Puis déchargez-le avec launchctl et supprimez-le de / Library / LaunchDaemons

Andriy Sylka
la source
2
sudo lsof -i:8080

En exécutant la commande ci-dessus, vous pouvez voir quels sont tous les travaux en cours d'exécution.

kill -9 <PID Number>

Entrez le PID (numéro d'identification du processus), cela mettra fin / tuera l'instance.

Viswesvar Sekar
la source
1

Vous pouvez également utiliser le moniteur d'activité pour identifier et quitter le processus à l'aide du port.

gcmori
la source
1
Comment pourrais-je faire ça?
Emil Stenström
Sur MacOSX: Moniteur d'activité> Réseau> trier par PID> trouver votre port bloqué (par exemple 8080, 5000, etc.)> cliquer en haut à gauche 'X'> confirmer que vous souhaitez quitter le processus. Peut être une bonne idée de modifier votre configuration d'exécution / construction pour vous assurer que seules des instances de serveur unique peuvent être créées, c'est-à-dire que vos ports utilisés sont libérés lors du démontage.
Alex Friedmann
1

Exécuter: nmap -p 8080 localhost(Installez nmap avec MacPorts ou Homebrew si vous ne l'avez pas encore sur votre système)

Rapport d'analyse Nmap pour localhost (127.0.0.1)

L'hôte est actif (latence de 0,00034s).

Autres adresses pour localhost (non analysées): :: 1

SERVICE DE L'ÉTAT DU PORT

8080 / tcp ouvrir le proxy http

Courir: 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 "

Exécuter: ps -ef 640(remplacez 501 par votre UID)

/System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/XPCServices/com.apple.PerformanceAnalysis.animationperfd.xpc/Contents/MacOS/com.apple.PerformanceAnalysis.animationperfd

Le port 8080 sur mac osx est utilisé par quelque chose installé avec XCode SDK

Yiling
la source
1

Utilisez la commande suivante:

lsof -n -i4TCP:8080 | awk '{print$2}' | xargs kill -9

L'ID de processus du port 8080 sera sélectionné et tué avec force en utilisant kill -9.

Suniti
la source
0

essayez netstat

netstat -vanp tcp | grep 3000

si votre netstat ne prend pas en charge -p, utilisez lsof

sudo lsof -i tcp:3000 

Pour Centos 7, utilisez

netstat -vanp --tcp | grep 3000
khem raj regmi
la source