Jak wyłączyć python simpleHTTPserver?

Więc próbuję nauczyć się d3, a wiki zasugerowała, że

Aby wyświetlać przykłady lokalnie, musisz mieć lokalny serwer WWW. Dowolne serwer WWW będzie działał; na przykład można uruchomić wbudowany Python Serwer:

python -m SimpleHTTPServer 8888 &

Świetnie... tylko teraz mam uruchomiony serwer... ale w pewnym momencie myślę, że powinienem znowu to wyłączyć.

Czy jest lepszy sposób na wyłączenie go niż użycie kill <pid>? To wygląda na coś wielkiego. młotek do małej roboty.

(używam Mac OS 10.6.8 (Snow Leopard))

FWIW: ctrl+c daje około 10 linii traceback, narzekając na przerwanie.

kill -3 <pid> wyświetla ostrzeżenie Findera w osobnym oknie "Python quit nieoczekiwanie".

Domyślne kill <pid> i kill -15 <pid> są względnie czyste (i proste).

Author: Suz, 2012-09-29

8 answers

Po prostu wysyłasz sygnały do procesów. {[0] } jest poleceniem do wysyłania tych sygnałów.

Polecenie klawiatury Ctrl + C (+C) wysyła SIGINT, kill -9 wysyła SIGKILL, a kill -15 wysyła SIGTERM.

Jaki sygnał chcesz wysłać na serwer, aby go zakończyć?

 29
Author: xbello,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-19 01:44:28

Jeśli uruchomiłeś serwer z

python -m SimpleHTTPServer 8888 

Następnie możesz nacisnąć ctrl + c, aby opuścić serwer.

Ale jeśli uruchomiłeś serwer z

python -m SimpleHTTPServer 8888 &

Lub

python -m SimpleHTTPServer 8888 & disown

Musisz najpierw zobaczyć listę, aby zabić proces,

Uruchom polecenie

ps

Lub

ps aux | less

Pokaże ci taki proces ..

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
Możesz dostać PID stąd. i zabij ten proces, uruchamiając to polecenie..
kill -9 7247

Tutaj 7247 jest python id.

Również z jakiegoś powodu, jeśli port jest nadal otwarty, możesz zamknąć port za pomocą tego polecenia

fuser -k 8888/tcp

Tutaj 8888 to port TCP otwarty przez Pythona.

Mam nadzieję, że jest teraz jasne.

 27
Author: codersaif,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-10 06:57:30

Lub możesz po prostu zrobić kill %1, co zabije pierwszą pracę umieszczoną w tle

 14
Author: Lachezar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-28 21:18:21
MYPORT=8888; 
kill -9 `ps -ef |grep SimpleHTTPServer |grep $MYPORT |awk '{print $2}'`
To jest to !!

Wyjaśnij wiersz poleceń:

  • ps -ef : Lista wszystkich procesów.

  • grep SimpleHTTPServer : proces filtrowania należący do"SimpleHTTPServer"

  • grep $MYPORT : filtruj ponownie proces należy do "SimpleHTTPServer", gdzie portem jest MYPORT (.i. E: MYPORT=8888)

  • awk '{print $2}' : wypisuje drugą kolumnę wyniku, która jest PID (ID procesu)

  • kill -9 <PID> : Wymuś proces zabijania za pomocą odpowiedniego PID.

 11
Author: Abdennour TOUMI,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-13 15:39:57

Wydaje się to przesadą, ale możesz użyć supervisor , aby uruchomić i zatrzymać swój simpleHttpserver i całkowicie zarządzać nim jako usługą.

Lub po prostu uruchom go na pierwszym planie zgodnie z sugestią i zabij go kontrolką c

 3
Author: dm03514,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-28 20:53:49

Okazuje się, że jest wyłączenie, ale to musi być zainicjowane z innego wątku.

To rozwiązanie zadziałało dla mnie: https://stackoverflow.com/a/22533929/573216

 2
Author: dirkk0,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:11

Wciśnięcie ctrl + C raz (poczekaj na traceback), a następnie wciśnięcie Ctrl + C ponownie mi pomogło:)

 0
Author: small_data88,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-17 16:26:12

Gdy uruchamiasz program jako proces w tle (dodając po nim &), np.:

python -m SimpleHTTPServer 8888 &

Jeśli okno terminala jest nadal otwarte, możesz to zrobić:

jobs

Aby uzyskać listę wszystkich zadań w tle w uruchomionym procesie powłoki.

Może wyglądać tak:

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

Aby zabić zadanie, możesz wykonać kill %1, aby zabić zadanie "[1]", lub wykonać fg %1, aby umieścić zadanie na pierwszym planie (fg), a następnie użyć ctrl-C, aby je zabić. (Po prostu wpisanie fg spowoduje wysłanie ostatniego tłem procesu na pierwszym planie).

W odniesieniu do SimpleHTTPServer wydaje się, że kill %1 jest lepszy niż fg + ctrl-C. przynajmniej nie protestuje komendą kill.

Powyższe zostało przetestowane w Mac OS, ale z tego co pamiętam działa tak samo w Linuksie.

Update: aby to zadziałało, serwer WWW musi zostać uruchomiony bezpośrednio z linii poleceń(dosłownie pierwszy fragment kodu). Użycie skryptu do jego uruchomienia spowoduje, że proces zostanie reach of jobs.

 0
Author: Erk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-27 23:01:39