[Utility Post] Que fait-on sur le port 8000? (Et comment l'arrêter)

tl; dr…

kill -9 $ (lsof -i TCP: 8000 | grep LISTEN | awk '{print $ 2}')

- - - - -

Lors de vos voyages, vous avez peut-être rencontré un écran ressemblant à ceci:

Quel est sur le port 8000?

Si aucun autre service évident n'est en cours d'exécution, cela signifie probablement que quelque chose utilise le port 8000 en tant que démon ou en arrière-plan. Il existe de nombreuses façons de le faire, mais la commande ci-dessous s’est révélée utile pour savoir exactement ce qui est exécuté sur un port particulier (et cela fonctionne sur des instances nues AWS EC2!):

$ lsof -i TCP: 8000 | grep ECOUTER

Voir la section «Autres lectures» ci-dessous pour plus de détails, mais la commande lsof répertorie les «fichiers ouverts» [d'où son nom] et l'indicateur -i indique les connexions réseau. Nous passons TCP: 8000, puis grep pour les enregistrements portant la mention LISTEN (processus en cours d’écoute / prêt sur 8000)

Nous sommes plus intéressés par le nombre dans la deuxième colonne, le PID, car nous pouvons l'utiliser pour tuer le processus.

[Assurez-vous à 100% que le PID que vous pensez que vous voulez tuer est bien celui qui veut vraiment tuer. Cela peut être très destructeur!]

$ kill -9 PID_TO_KILL

En tant que single-banger quelque peu maladroit, vous pouvez même lancer ceci (échangez $ PORTNUM avec votre port cible):

kill -9 $ (lsof -i TCP: $ PORTNUM | grep LISTEN | awk '{print $ 2}')

Il y a beaucoup de façons de le faire (voir ici: http://stackoverflow.com/questions/3855127/find-and-kill-process-locking-port-3000-on-mac), mais ce rapide Une approche sale peut aider à sauver du temps.

Crédit supplémentaire: exemple

Si vous souhaitez utiliser un exemple de déverrouillage de ports, consultez ce référentiel ou entrez les commandes suivantes:

$ git clone https://github.com/valgaze/kill_port_example _tmpkill_port_example && cd _tmpkill_port_example && npm start

Ce qui précède va cloner le référentiel sur _tmpkill_port_example puis démarrer un serveur sur le port 8000 en tant que démon (voir package.json).

Ensuite, dans une autre session de terminal dans le même répertoire (_tmpkill_port_example), exécutez la commande suivante pour afficher l'erreur «Erreur: écoutez EADDRINUSE ::: 8000»:

$ npm run boot_server2

À partir de là: utilisez ce que vous avez appris ci-dessus pour pouvoir démarrer server2 sur le port 8000 (que vous pouvez quitter avec CTRL-C).

Valve d'échappement si vous cassez vraiment quelque chose:

$ npm run cleanup

Lectures complémentaires

http://www.thegeekstuff.com/2012/08/lsof-command-examples