229

Restarting the Django server displays the following error:

this port is already running....

This problem occurs specifically on Ubuntu and not other operating systems. How can I free up the port to restart the server?

Jeff Bauer
  • 12,914
  • 9
  • 46
  • 71
Ashish Kumar Saxena
  • 3,570
  • 8
  • 24
  • 39
  • Dont use ctrl+z to stop server. As mentioned here https://askubuntu.com/a/510816 `Control+Z` shunts it into the background, suspended. That is why your port is already in use. – Muzaffer May 21 '21 at 08:07

16 Answers16

630

A more simple solution just type sudo fuser -k 8000/tcp. This should kill all the processes associated with port 8000.

EDIT:

For osx users you can use sudo lsof -t -i tcp:8000 | xargs kill -9

Mounir
  • 9,356
  • 2
  • 25
  • 33
65
netstat -ntlp

It will show something like this.

   Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State           PID/Program name    
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      6599/python         
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      -                   
tcp        0      0 192.168.124.1:53        0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::3306                 :::*                    LISTEN     

So now just close the port in which Django/python running already by killing the process associated with it.

kill -9 PID

in my case

kill -9 6599

Now run your Django app.

14
ps aux | grep -i manage

after that you will see all process 


ubuntu@ip-10-154-22-113:~/django-apps/projectname$ ps aux | grep -i manage
ubuntu    3439  0.0  2.3  40228 14064 pts/0    T    06:47   0:00 python manage.py runserver project name
ubuntu    3440  1.4  9.7 200996 59324 pts/0    Tl   06:47   2:52 /usr/bin/python manage.py runserver project name
ubuntu    4581  0.0  0.1   7988   892 pts/0    S+   10:02   0:00 grep --color=auto -i manage


kill -9 process id


e.d kill -9 3440


`enter code here`after that :

python manage.py runserver project name
Ashish Kumar Saxena
  • 3,570
  • 8
  • 24
  • 39
  • So you try to start the server again, while one is already running? That won't work as the first one will be using the HTTP port. You must kill or terminate the first one, before trying to run again (at least run it on the same port). – Some programmer dude Nov 27 '13 at 10:05
  • It's working because you killed the currently running instance, which is what I said you have to do. You can't have two programs listening on the same network port, it's as easy as that. So this is a solution to something that isn't really a problem, just a fact. – Some programmer dude Nov 27 '13 at 10:10
  • I'm sorry if I might have been coming on to strong, I'm just feeling a little grumpy today. :/ – Some programmer dude Nov 27 '13 at 10:20
9

By default, the runserver command starts the development server on the internal IP at port 8000.

If you want to change the server’s port, pass it as a command-line argument. For instance, this command starts the server on port 8080:

python manage.py runserver 8080
Stephen Rauch
  • 40,722
  • 30
  • 82
  • 105
Freddy
  • 97
  • 1
  • 2
  • 3
    @StephenRauch, the question does not ask WHO is using the port. The question is stating an error being thrown. This is a solution on how to fix that error. – Freddy Nov 01 '18 at 18:38
  • 1
    The OP is asking how to restart the server on port 8000, not asking for running it on another port – uclaastro Jan 23 '20 at 06:32
5

We don't use this command { sudo lsof -t -i tcp:8000 | xargs kill -9 } Because it's close all tabs...You should use to

ps -ef | grep python

kill -9 process_id

ps -ef | grep python (show all process with id)

kill -9 11633 (11633 is a process id to :- /bin/python manage.py runserver)

Mr Singh
  • 2,997
  • 2
  • 28
  • 42
5

Sorry for comment in an old post but It may help people

Just type this on your terminal

killall -9 python3

It will kill all python3 running on your machine and it will free your all port. Greatly help me when to work in Django project.

Antu
  • 1,611
  • 2
  • 20
  • 31
2

This is an expansion on Mounir's answer. I've added a bash script that covers this for you. Just run ./scripts/runserver.sh instead of ./manage.py runserver and it'll work exactly the same way.

#!/bin/bash

pid=$(ps aux | grep "./manage.py runserver" | grep -v grep | head -1 | xargs | cut -f2 -d" ")

if [[ -n "$pid" ]]; then
    kill $pid
fi

fuser -k 8000/tcp
./manage.py runserver
jstaab
  • 2,386
  • 21
  • 34
1

ps aux | grep manage

ubuntu 3438 127.0.0 2.3 40256 14064 pts/0 T 06:47 0:00 python manage.py runserver

kill -9 3438

Basant Rules
  • 613
  • 7
  • 8
  • 2
    While this code snippet may solve the question, [including an explanation](//meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) really helps to improve the quality of your post. Remember that you are answering the question for readers in the future, and those people might not know the reasons for your code suggestion. Please also try not to crowd your code with explanatory comments, this reduces the readability of both the code and the explanations! – rene Sep 04 '17 at 17:42
1

For me, this happens because my API request in Postman is being intercepted by a debugger breakpoint in my app... leaving the request hanging. If I cancel the request in Postman before killing my app's server, the error does not happen in the first place.

--> So try cancelling any open requests you are making in other programs.

On macOS, I have been using sudo lsof -t -i tcp:8000 | xargs kill -9 when I forget to cancel the open http request in order to solve error = That port is already in use. This also, complete closes my Postman app, which is why my first solution is better.

HashRocketSyntax
  • 2,653
  • 3
  • 23
  • 47
1

Type 'fg' as command after that Ctrl-C.
Command:
Fg will show which is running on background. After that Ctrl-C will stop it.

fg
ctl-c

Samsul Islam
  • 2,322
  • 2
  • 13
  • 20
mahbubcseju
  • 1,878
  • 1
  • 11
  • 15
1
lsof -t -i tcp:8000 | xargs kill -9
Samsul Islam
  • 2,322
  • 2
  • 13
  • 20
Nandy
  • 81
  • 1
  • 4
1

Click the arrow in the screenshot and find the bash with already running Django server. You were getting the message because your server was already running and you tried to start the server again.

enter image description here

Python Newbie
  • 129
  • 1
  • 8
0

It seems that IDEs, VSCode, Puppeteer, nodemon, express, etc. causes this problem, you ran a process in the background or just closed the debugging area [browser, terminal, etc. ] or whatever , anyway, i have answered same question before, Here you are it's link

https://stackoverflow.com/a/49797588/2918720

KhogaEslam
  • 1,383
  • 16
  • 18
0

if you have face this problem in mac you just need to open activity monitor and force quite python then try again

enter image description here

Ahmed Safadi
  • 3,623
  • 30
  • 28
0

In case You are using the VSC's screen terminal, The error might be due to the fact that you already runserver in some other shell.

Just click on the dropbox on the left of the + sign in the header of the terminal of VSC and select some other shell and check if the server is already running there. Quit that server and you are ready to launch a another server.

Yash Verma
  • 169
  • 2
  • 4
0

Click the arrow in the screenshot and find the bash with already running Django server. You were getting the message because your server was already running and you tried to start the server again.

enter image description here

Python Newbie
  • 129
  • 1
  • 8