Как закрыть 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>
относительно чисты (и просты).
Ответы
Ответ 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 снова сделало трюк для меня:)