Nice programing

Python simpleHTTPserver를 어떻게 종료합니까?

nicepro 2020. 12. 4. 20:37
반응형

Python simpleHTTPserver를 어떻게 종료합니까?


그래서 저는 d3를 배우려고하는데 위키

예제를 로컬로 보려면 로컬 웹 서버가 있어야합니다. 모든 웹 서버가 작동합니다. 예를 들어 Python의 내장 서버를 실행할 수 있습니다.

python -m SimpleHTTPServer 8888 &

좋아요 ... 이제야 서버가 실행 중입니다 ...하지만 언젠가는 다시 종료해야한다고 생각합니다.

사용하는 것보다 종료하는 더 좋은 방법이 kill <pid>있습니까? 작은 일을하기에는 큰 망치처럼 보입니다.

(Mac OS 10.6.8 (Snow Leopard)을 실행 중입니다.)

FWIW : ctrl+c약 10 줄의 트레이스 백을 제공하며 중단에 대해 불평합니다.

kill -3 <pid> Finder가 별도의 창에 'Python이 예기치 않게 종료되었습니다'라는 경고를 표시합니다.

기본 kill <pid>kill -15 <pid>비교적 깨끗한 (간단)입니다.


단순히 프로세스에 신호를 보내는 것입니다. kill신호를 보내는 명령입니다.

키보드 명령 Ctrl + C ( + C)는 SIGINT를 kill -9보내고 SIGKILL을 kill -15보내고 SIGTERM을 보냅니다.

종료하기 위해 서버로 어떤 신호를 보내시겠습니까?


서버를 시작한 경우

python -m SimpleHTTPServer 8888 

그런 다음 ctrl + c를 눌러 서버를 다운시킬 수 있습니다.

그러나 서버를 시작한 경우

python -m SimpleHTTPServer 8888 &

또는

python -m SimpleHTTPServer 8888 & disown

프로세스를 종료하려면 먼저 목록을 확인해야합니다.

실행 명령

ps

또는

ps aux | less

이와 같은 실행중인 프로세스를 보여줍니다.

PID TTY          TIME CMD
7247 pts/3     00:00:00 python
7360 pts/3     00:00:00 ps
23606 pts/3    00:00:00 bash

여기에서 PID를 얻을 수 있습니다. 이 명령을 실행하여 해당 프로세스를 종료합니다.

kill -9 7247

여기서 7247은 파이썬 ID입니다.

또한 어떤 이유로 포트가 여전히 열려 있으면이 명령으로 포트를 종료 할 수 있습니다.

fuser -k 8888/tcp

여기서 8888은 파이썬에 의해 열린 tcp 포트입니다.

이제 분명해지기를 바랍니다.


또는 그냥 할 수 있습니다. kill %1그러면 백그라운드에있는 첫 번째 작업이 종료됩니다.


MYPORT=8888; 
kill -9 `ps -ef |grep SimpleHTTPServer |grep $MYPORT |awk '{print $2}'`

THat입니다 !!

명령 줄 설명 :

  • ps -ef : 모든 프로세스를 나열합니다.

  • grep SimpleHTTPServer : "SimpleHTTPServer"에 속하는 필터 프로세스

  • grep $MYPORT : 다시 필터 프로세스는 "SimpleHTTPServer"에 속하며 포트는 MYPORT입니다 (.ie : MYPORT = 8888).

  • awk '{print $2}' : PID (Process ID) 인 결과의 두 번째 열을 인쇄합니다.

  • kill -9 <PID> : 적절한 PID로 강제 종료 프로세스.


종료가 있지만 다른 스레드에서 시작되어야합니다.

이 솔루션은 나를 위해 일했습니다 : https://stackoverflow.com/a/22533929/573216


프로그램을 백그라운드 프로세스로 실행하는 경우 ( &뒤에 추가 ), 예 :

python -m SimpleHTTPServer 8888 &

터미널 창이 여전히 열려 있으면 다음을 수행 할 수 있습니다.

jobs

실행중인 셸 프로세스 내의 모든 백그라운드 작업 목록을 가져옵니다.

다음과 같이 보일 수 있습니다.

$ jobs
[1]+  Running                 python -m SimpleHTTPServer 8888 &

To kill a job, you can either do kill %1 to kill job "[1]", or do fg %1 to put the job in the foreground (fg) and then use ctrl-c to kill it. (Simply entering fg will put the last backgrounded process in the foreground).

With respect to SimpleHTTPServer it seems kill %1 is better than fg + ctrl-c. At least it doesn't protest with the kill command.

The above has been tested in Mac OS, but as far as I can remember it works just the same in Linux.

Update: For this to work, the web server must be started directly from the command line (verbatim the first code snippet). Using a script to start it will put the process out of reach of jobs.


It seems like overkill but you can use supervisor to start and stop your simpleHttpserver, and completely manage it as a service.

Or just run it in the foreground as suggested and kill it with control c


Hitting ctrl + c once(wait for traceback), then hitting ctrl+c again did the trick for me :)

참고URL : https://stackoverflow.com/questions/12647196/how-do-i-shut-down-a-python-simplehttpserver

반응형