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
'Nice programing' 카테고리의 다른 글
SQL Server의 모든 현재 임시 테이블 목록을 가져 오는 방법이 있습니까? (0) | 2020.12.04 |
---|---|
GCC가 바쁜 대기 루프를 최적화하지 못하게하는 방법은 무엇입니까? (0) | 2020.12.04 |
grep "\\"XXFile을 사용하면 "Trailing Backslash"가 표시됩니다. (0) | 2020.12.04 |
현재 시간에시, 분, 초 추가 (0) | 2020.12.04 |
'바이너리'와 '텍스트'파일을 어떻게 구별합니까? (0) | 2020.12.04 |