Linux -- 백그라운드에서 실행되는 Django 테스트 서버... 어딘가

Linux -- 백그라운드에서 실행되는 Django 테스트 서버... 어딘가

Vista 컴퓨터에서 Putty를 사용하여 개발 서버(Ubuntu)에 로그인하고 Django 테스트 서버를 시작했습니다. 내 웹 앱을 테스트하기 위해 아파치와 유사한 서버를 실행합니다. 앱은 포트 8080의 내부 IP 주소에서 실행됩니다. 웹 브라우저를 통해 앱을 열 수 있으며 192.168.0.130:8080.

나는 (물리적으로) 잠시 동안 컴퓨터를 떠나 있다가 돌아와서 Putty 연결 시간이 초과되었음을 발견했습니다. 별거 아닙니다. 방금 서버에 다시 로그인했습니다. 그런데 지금 Django 테스트 서버를 실행하려고 하면 해당 포트가 이미 사용 중이라고 나옵니다. 이는 첫 번째 테스트 서버 인스턴스가 여전히 포트 8080에서 실행되고 있음을 의미합니다.

이 프로세스를 어떻게 종료합니까? 그 과정은 어떤 모습인가요? 나는 이것을 했고 ps aux이것이 불쾌한 과정이라는 느낌을 받았습니다.

garfonzo    5719  0.3  0.0      0     0 ?        D    08:58   1:07 [python]

제가 오늘 아침 그 시간쯤에 서버를 시작했기 때문에 Django는 Python 기반입니다. 그러나 a를 수행해도 kill 5719아무 작업도 수행되지 않습니다. 프로세스가 종료되지 않으며 여전히 테스트 서버를 시작할 수 없습니다.

어떤 아이디어라도!?

편집하다-- 상세 사항은:

나는 또한 실행했고 netstat -tulpn결과는 다음과 같습니다.

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 192.168.1.130:8080      0.0.0.0:*               LISTEN      -

참 편리하지 않나요? 프로세스 ID를 알고 싶은 포트에 PID가 없습니다!

답변1

이것이 올바른 프로세스라고 확신하는 경우(아마 그럴 것 같습니다) - netstat가 유용한 정보를 알려주지 않으므로 다음을 사용할 수 있습니다.

kill -9 5719 

-9 스위치는 기본 SIGTERM 신호 대신 SIGKILL을 보내 프로세스가 중지 가능한 경우 프로세스를 중지합니다.

SIGTERM 신호가 프로세스로 전송되어 효과적으로 종료를 요청합니다. 프로세스는 SIGTERM을 포착하고 완전히 다른 작업을 수행하도록 선택할 수 있습니다.

반면에 SIGKILL 신호는 프로세스로 이동하지 않으므로 무시할 수 없습니다. 커널은 프로세스를 즉시 종료하므로 프로세스를 정리할 기회를 제공하지 않으므로 최후의 수단으로만 사용해야 합니다.

프로세스가 I/O 차단되면 SIGKILL로 중지할 수 없습니다. 이 경우 좀비 프로세스이므로 이를 지우려면 재부팅이 필요할 수 있습니다.

정교화: I/O를 기다리고 있는 프로세스는 종료될 수 없습니다. 그렇게 하면 해당 I/O를 수행하는 커널 함수에 대한 매달린 콜백이 남게 되기 때문입니다.

또는 프로세스의 부모가 를 호출하지 않으면 wait해당 프로세스는 좀비 프로세스로 유지됩니다. 죽은 프로세스에 대한 좋은 요약은 다음 위치에 있습니다.http://www.linuxsa.org.au/tips/zombies.html.

ps에 나타나는 좀비 프로세스는 무엇입니까? 내가 그들을 죽여도 그들은 사라지지 않아요!

좀비는 죽은 프로세스입니다. 죽은 사람을 죽일 수는 없습니다. 모든 프로세스는 결국 죽고, 죽으면 좀비가 됩니다. 그들은 자원을 거의 소비하지 않습니다. 이는 그들이 죽었기 때문에 예상할 수 있는 일입니다! 좀비가 있는 이유는 좀비의 부모(프로세스)가 좀비의 종료 상태 및 리소스 사용 통계를 검색할 수 있기 때문입니다. 부모는 wait() 시스템 호출 중 하나를 사용하여 더 이상 좀비가 필요하지 않다는 신호를 운영 체제에 보냅니다.

프로세스가 종료되면 해당 자식 프로세스는 모두 init 프로세스인 프로세스 번호 1의 자식이 됩니다. Init은 아이들이 좀비로 남지 않도록 ``항상'' 죽어서 기다리고 있습니다.

좀비 프로세스가 있는 경우 이는 해당 좀비가 해당 부모에 의해 기다리지 않았음을 의미합니다(ps -l에 표시된 PPID 참조). 세 가지 선택 사항이 있습니다. 상위 프로세스를 수정합니다(기다립니다). 부모를 죽여라; 아니면 그것과 함께 살아요. 좀비는 ps 출력에서 ​​한 줄만 더 차지하기 때문에 함께 사는 것이 그렇게 어렵지 않다는 것을 기억하십시오.

관련 정보