2013-01-19 6 views
9

Ich versuche ein Signal an den Django-Entwicklungsserver zu senden, um die Eltern- und Kindprozesse zu beenden.Entsprechendes Signal, um den Django-Entwicklungsserver zu töten

$ python manage.py runserver 
Validating models... 

0 errors found 
Django version 1.4.1, using settings 'myproject.settings' 
Development server is running at http://127.0.0.1:8000/ 
Quit the server with CONTROL-C. 

$ ps axf 
26077 pts/12 Ss  0:00 \_ -bash 
4189 pts/12 S+  0:00 | \_ python manage.py runserver 
4194 pts/12 Sl+ 0:00 |  \_ /myproject/.virtualenv/bin/python manage.py runserver 

$ kill -s SIGINT 4189 
$ ps axf 
4194 pts/12 Sl  0:00 /sh/myproject/.virtualenv/bin/python manage.py runserver 

Mein Verständnis ist, dass SIGINT sollte durch Drücken von Strg-C im Terminal emulieren, aber feststellen, dass SIGINT die Eltern beendet, 4189, aber nicht das Kind, 4194. Gleiches Verhalten für SIGKILL, SIGTERM, SIGSTOP. Die Verwendung von Strg-C vom Terminal tötet beide wie erwartet.

Gibt es eine Möglichkeit, die Eltern in einer Weise zu beenden, die auch das Kind tötet, ohne die PID des Kindes zu kennen?

Antwort

6

Setzen Sie einen Strich vor den Prozess, dies sollte die Prozessgruppe beenden.

kill -s SIGINT -4189 
9

kill -9 4189

einen Versuch haben, sollte es funktionieren!

+0

"Gibt es eine Möglichkeit, das übergeordnete Element in a zu beenden Art und Weise, die auch das Kind tötet? " Ich hoffe, das Kind indirekt zu töten, indem ich nur den Elternteil töte. Ich versuche, den django dev Server mit der Runit-Suite zu überwachen, ohne --noreload zu benutzen. – Aaron

+0

@Aaron, Diese Antwort funktionierte für mich, aber die akzeptierte Antwort nicht – Gab

4

ich ähnliches Problem hatte, aber akzeptierte Antwort nicht auf meinem CentOS nicht funktioniert:

$ ps fx | grep [p]ython 
30864 pts/0 S  0:00 python manage.py runserver 0.0.0.0:80 
30866 pts/0 Sl  0:00 \_ /var/webapp/venv/bin/python manage.py runserver 0.0.0.0:80 
$ kill -s SIGINT -30864 
-bash: kill: 30864: invalid signal specification 

So fand ich diese Lösung:

$ pkill -P 30864 
$ ps fx | grep [p]ython 
$ # empty 
0

Versuchen pkill mit:

$ pkill -f "python3 manage.py runserver" 
Verwandte Themen