Подтвердить что ты не робот

Как закрыть python simpleHTTPserver?

Итак, я пытаюсь изучить d3, а wiki предложил, чтобы

Чтобы просмотреть примеры локально, у вас должен быть локальный веб-сервер. Любые веб-сервер будет работать; например, вы можете запускать встроенный Python Сервер:

python -m SimpleHTTPServer 8888 &

Отлично... только теперь у меня работает сервер... но в какой-то момент я думаю, что, вероятно, я должен снова закрыть это.

Есть ли лучший способ отключить его, чем использовать kill <pid>? Это похоже на большой молот для небольшой работы.

(Я запускаю Mac OS 10.6.8 (Snow Leopard))

FWIW: ctrl+c дает около 10 строк трассировки, жалуясь на прерывание.

kill -3 <pid> дает предупреждение Finder в отдельном окне "Python quit неожиданно".

По умолчанию kill <pid> и kill -15 <pid> относительно чисты (и просты).

4b9b3361

Ответ 1

Вы просто посылаете сигналы процессам. kill - это команда для отправки этих сигналов.

Команда клавиатуры Ctrl + C ( + C) отправляет SIGINT, kill -9 отправляет SIGKILL, а kill -15 отправляет SIGTERM.

Какой сигнал вы хотите отправить на сервер для его завершения?

Ответ 2

если вы запустили сервер с помощью

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 - это идентификатор python.

Также по какой-либо причине, если порт все еще открыт, вы можете закрыть порт с помощью этой команды

fuser -k 8888/tcp

здесь 8888 - это порт tcp, открытый python.

Надеюсь, теперь это ясно.

Ответ 3

или вы можете просто сделать kill %1, который убьет первое задание, помещенное в фоновый рисунок

Ответ 4

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

Вот оно!

Объяснить командную строку:

  • ps -ef: список всех процессов.

  • grep SimpleHTTPServer: процесс фильтрации, который принадлежит "SimpleHTTPServer"

  • grep $MYPORT: процесс фильтра снова принадлежит "SimpleHTTPServer", где порт MYPORT (.i.e: MYPORT = 8888)

  • awk '{print $2}': напечатать второй столбец результата, который является идентификатором PID (идентификатор процесса)

  • kill -9 <PID>: принудительно убить процесс с помощью соответствующего PID.

Ответ 5

Кажется, что это излишний, но вы можете использовать supervisor, чтобы запустить и остановить ваш простойHttpserver и полностью управлять им как службой.

Или просто запустите его на переднем плане, как было предложено, и убейте его с помощью элемента управления c

Ответ 6

Оказывается, есть остановка, но это должно быть инициировано из другого потока.

Это решение сработало для меня: fooobar.com/questions/121822/...

Ответ 7

Нажатие Ctrl + C один раз (ожидание трассировки), а затем нажатие ctrl + c снова сделало трюк для меня:)