Как закрыть 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 неожиданно вышел".
по умолчанию kill <pid> и kill -15 <pid> относительно чистые (и простой).
8 ответов:
вы просто посылаете сигналы процессам.
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-это идентификатор python.
также по какой-то причине, если порт все еще открыт, вы можете закрыть порт с помощью этой команды
fuser -k 8888/tcpздесь 8888-это tcp-порт, открытый python.
надеюсь теперь понятно.
MYPORT=8888; kill -9 `ps -ef |grep SimpleHTTPServer |grep $MYPORT |awk '{print }'`вот оно !!
объясните командную строку:
ps -ef: список всех процессов.
grep SimpleHTTPServer: процесс фильтрации, который принадлежит "SimpleHTTPServer"
grep $MYPORT: фильтр снова Процесс принадлежит к "SimpleHTTPServer", где порт является MYPORT (.т. е.: MYPORT=8888)
awk '{print }': печать второго столбца результата, который является PID (идентификатор процесса)
kill -9 <PID>: процесс принудительного убийства с соответствующим PID.
Это кажется излишним, но вы можете использовать руководитель чтобы запустить и остановить simpleHttpserver, и полностью управлять им как сервисом.
или просто запустите его на переднем плане, как было предложено, и убейте его с помощью control c
оказывается, есть выключение, но это должно быть инициировано из другого потока.
Это решение работало для меня:https://stackoverflow.com/a/22533929/573216
нажав ctrl + c один раз(подождите трассировки), а затем нажав ctrl + c снова сделал трюк для меня :)
при запуске программы в фоновом режиме (путем добавления
&после него), например:python -m SimpleHTTPServer 8888 &если окно терминала все еще открыт, вы можете сделать:
jobsчтобы получить список всех фоновых заданий в процессе запущенной оболочки.
это может выглядеть так:
$ jobs [1]+ Running python -m SimpleHTTPServer 8888 &чтобы убить работу, вы можете сделать
kill %1убить Иова " [1]", или сделатьfg %1чтобы поместить задание на передний план (fg), а затем использовать ctrl-c, чтобы убить его. (Просто введитеfgпоставит последний фоновый процесс на передний план).в отношении SimpleHTTPServer кажется
kill %1лучше, чемfg+ сочетание клавиш Ctrl-С. По крайней мере, это не протест команды Kill.выше был протестирован в Mac OS, но, насколько я помню, он работает точно так же в Linux.
обновление: для этого веб-сервер должен быть запущен непосредственно из командной строки (дословно первый фрагмент кода). Использование скрипта для запуска поставит процесс вне досягаемости
jobs.
Comments