I use a Cloud server to test my django small project, I type in manage.py runserver
and then I log out my cloud server, I can visit my site normally, but when I reload my cloud server, I don't know how to stop the development server, I had to kill the process to stop it, is there anyway to stop the development?
-
4This is a good question. Yes, all of us know how to kill a process but when a service provides a start option, you assume you don't know something... and look for a stop. It is rather an oversight that django breaks this paradigm.– KateYoakOct 5, 2015 at 20:39
-
1@KateYoak Well, I sent it to Django developers.– BramborSep 7, 2020 at 4:16
11 Answers
The answer is findable via Google -- and answered in other forums. Example solution is available on the Unix & Linux StackExchange site.
To be explicit, you could do:
ps auxw | grep runserver
This will return the process and its respective PID, such as:
de 7956 1.8 0.6 540204 55212 ? Sl 13:27 0:09 /home/de/Development/sampleproject/bin/python ./manage.py runserver
In this particular case, the PID is 7956
. Now just run this to stop it:
kill 7956
And to be clear / address some of the comments, you have to do it this way because you're running the development server in the background (the &
in your command). That's why there is no "built-in" Django stop option...
-
1Can you bring the job to the foreground using 'fg' on the command line? I toggled mine to bg then back to fg. Then CONTROL-C stops the job altogether. When I start my server, it prints a few lines of text, the last being "Quit the server with CONTROL-C." February 01, 2018 - 20:31:32 Django version 2.0.1, using settings 'mysite.settings' Starting development server at 127.0.0.1:8000 Quit the server with CONTROL-C. Feb 1, 2018 at 20:34
-
@the_cat_lady that is a good suggestion, too! I would say that warrants its own answer, since it's another way to do it...– userFeb 1, 2018 at 21:06
-
Unfortunately, Django launches a child process, which makes two process, which makes it hard to kill from a script. Especially because killing the parent does not kill the child. May 22, 2019 at 6:06
-
"The answer is findable via Google" --> I searched on Google and found this current page, from Google :)– PatapoomOct 12, 2022 at 8:53
One liner..
pkill -f runserver
-
3
-
3Watch out, in case multiple 'runserver' processes are running!!! This will kill all running "runserver" processes.– amolbkJan 30, 2020 at 8:40
-
Try this
lsof -t -i tcp:8000 | xargs kill -9
well it seems that it's a bug that django hadn't provided a command to stop the development server . I thought it have one before~~~~~
-
1My ISP provides a very limited shell that kicks me out on some commands, like
kill
and evenps
:) Though I may easily execute python manage.py ... It's a pity to file a support ticket each time I need to execute a single command. So I agree – it's a must to be able to stop the server– p.boikoOct 31, 2017 at 15:12
We can use the following command.
-> netstat -ntlp
then we will get number of process running with PID, find our python server PID and Kill process.
-> kill -9 PID
As far as i know ctrl+c or kill process is only ways to do that on remote machine. If you will use Gunicorn server or somethink similar you will be able to do that using Supervisor.
-
1
This worked for me on windows.
Use the below command to list all connections and listening ports (-a) along with their PID (-o).
netstat -a -o
Then use this to kill the process
taskkill /PID PUT_THE_PID_HERE /F
From task manager you can end the python tasks that are running.
Now run python manage.py runserver
from your project directory and it will work.
Programmatically using a .bat
script in Command Prompt
in Windows:
@ECHO OFF
SET /A port=8000
FOR /F "tokens=5" %%T IN ('netstat -ano ^| findstr :%port%') DO (
SET /A processid=%%T
TASKKILL /PID %%T /F
)
gives
SUCCESS: The process with PID 5104 has been terminated.
You can Quit the server by hitting CTRL-BREAK.