2013-01-19 17 views
9

Tôi đang cố gắng gửi tín hiệu đến máy chủ phát triển django để giết các quy trình cha và con.Tín hiệu thích hợp để diệt máy chủ phát triển django

$ 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 

sự hiểu biết của tôi là SIGINT nên bắt chước cách nhấn Ctrl-C trong thiết bị đầu cuối, nhưng nhận thấy rằng SIGINT chấm dứt phụ huynh, 4189, nhưng không phải là đứa trẻ, 4194. Cùng hành vi cho SIGKILL, SIGTERM, SIGSTOP. Sử dụng Ctrl-C từ thiết bị đầu cuối sẽ giết cả hai như mong đợi.

Có cách nào để chấm dứt phụ huynh theo cách cũng giết trẻ mà không biết PID của trẻ không?

Trả lời

6

Đặt dấu gạch ngang trước quy trình, thao tác này sẽ giết nhóm quá trình.

kill -s SIGINT -4189 
9

kill -9 4189

Hãy thử, nó sẽ hoạt động!

+0

"Có cách nào để chấm dứt phụ huynh trong một cách nào cũng giết chết đứa trẻ? " Tôi hy vọng gián tiếp giết đứa trẻ bằng cách chỉ giết cha mẹ. Tôi đang cố gắng chạy máy chủ django dev giám sát bằng cách sử dụng bộ phần mềm runit mà không cần sử dụng --noreload. – Aaron

+0

@Aaron, Câu trả lời này phù hợp với tôi nhưng câu trả lời được chấp nhận không – Gab

4

Tôi có vấn đề tương tự nhưng câu trả lời chấp nhận không làm việc trên CentOS của tôi:

$ 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 

Vì vậy, tôi tìm thấy giải pháp này:

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

Hãy thử sử dụng pkill:

$ pkill -f "python3 manage.py runserver" 
Các vấn đề liên quan