70 votes

Comment "effacer" le port lors du redémarrage du serveur d'exécution de django ?

Souvent, lorsque je redémarre le serveur d'exécution de Django, si j'utilise le même numéro de port, j'obtiens un message "le port est déjà utilisé". Par la suite, je dois incrémenter le numéro de port à chaque fois pour éviter cela.

Ce n'est pas le cas sur tous les serveurs, cependant, et je me demande donc comment je pourrais réaliser cela sur le système actuel sur lequel je travaille ?

BTW, la plateforme est Ubuntu 8.10

0 votes

Ce problème ne s'applique pas seulement à Django, alors peut-être pouvons-nous changer le titre ? Je suis tombé sur cette erreur en exécutant une application Angular. J'ai trouvé cette question avec une recherche google how to kill port 8000 Pourtant, cela s'appliquait aussi à moi. En modifiant le titre et en rendant le champ d'application plus général, nous pourrions éviter certaines questions redondantes par la suite.

1 votes

Essayez ceci sudo fuser -k 8001/tcp

126voto

Meilo Points 1361

J'ai trouvé cette information (provenant de Kristinn Örn Sigurðsson) pour résoudre mon problème :

Pour le tuer avec -9, vous devrez lister tous les processus manage.py en cours, par exemple :

ps aux | grep -i manage

Vous obtiendrez une sortie similaire à celle-ci si vous avez commencé sur plusieurs ports :

14770     8264  0.0  1.9 546948 40904 ?        S    Sep19   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8006
14770    15215  0.0  2.7 536708 56420 ?        S    Sep13   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8001
14770    30144  0.0  2.1 612488 44912 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8000
14770    30282  0.0  1.9 678024 40104 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8002
14770    30592  0.0  2.1 678024 45008 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8003
14770    30743  0.0  2.1 678024 45044 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8004

Ensuite, vous devrez sélectionner le pid (qui est le deuxième chiffre à gauche) du bon processus manage.py (python manage.py runserver... etc) et le faire :

kill -9 pid

Dans l'exemple ci-dessus, si vous vouliez libérer le port 8000, vous le feriez :

kill -9 30144

0 votes

Je veux juste ajouter que cette solution a fonctionné pour un collègue utilisant Python 2.6.2 sur OS X Lion, Django 1.2.0b1. Merci !

0 votes

J'ai arrêté le serveur Django avec Ctrl+C mais le processus a continué à fonctionner. Cette réponse était la solution, elle devrait être acceptée.

0 votes

"ps aux | grep -i runserver" semblait donner moins de résultats que "ps aux | grep -i manage".

40voto

mipadi Points 135410

Vous obtenez ce message parce que le serveur est déjà en cours d'exécution (éventuellement en arrière-plan). Assurez-vous de tuer le processus (amenez-le au premier plan et appuyez sur ctrl-c) pour arrêter le processus.

0 votes

Ctrl+z pour annuler. Si vous ne voyez pas d'invite de commande, votre serveur est toujours en cours d'exécution.

15 votes

Ctrl-z place un processus en arrière-plan, de sorte que l'on pourrait voir une invite de commande, même si le serveur est toujours en cours d'exécution (en arrière-plan).

25 votes

Fg l'amène au premier plan. Ensuite, appuyez sur ctrl+c pour l'arrêter/la fermer.

30voto

abhiomkar Points 641

Si le ps aux (selon la réponse de Meilo) ne liste pas le processus que vous vouliez tuer, mais montre le port actif dans le fichier netstat -np | grep 8004 activité réseau, essayez cette commande (fonctionne sur Ubuntu).

sudo fuser -k 8004/tcp

où 8004 est le numéro du port que vous voulez fermer. Cela devrait tuer tous les processus associés au port 8004.

2 votes

Sur l'utilisation du Mac : sudo lsof -t -i tcp:8000 | xargs kill -9 Conseil du chapeau : stackoverflow.com/questions/20239232/

14voto

Non, ce n'est pas un idiot les gars. La même chose m'arrive. Apparemment, c'est un bug du processus python UUID qui continue à fonctionner longtemps après l'arrêt du serveur django, ce qui bloque le port.

2 votes

J'ai le même problème dans Léopard. Je le ferme avec Ctrl-C et le port est toujours bloqué.

11voto

Ranju R Points 131
fuser -k 8000/tcp

Exécuté dans le terminal, il fonctionne dans ubutu. 8000 est le port.

0 votes

Je reçois cette erreur, et j'ai essayé ceci. Avez-vous d'autres solutions ?

0 votes

Il s'avère que postgres ne fonctionnait pas. Si Postgres ne fonctionne pas, il n'écoute pas sur le port 5432. Je l'ai lancé et ça a marché comme sur des roulettes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X