2017-02-23 2 views
0

Я использую http-сервер для загрузки http://localhost:8484 в определенную папку. (Для целей тестирования) ОС команды я бегу в моем коде:Как остановить http-сервер на конкретном порту?

http-server -p 8484 test/ 

и после того, как я закончу загружая все, что я бегу:

http-server stop 

Однако, после того, как тест будет сделано, я вижу, что http-сервер с портом 8484 еще жив!

, запустив ps aux | grep http

Какую команду я должен работать, чтобы остановить его?

  • Я использую Mac OSX (El Capitan версия)
  • Я пишу код в Эрл (хотя я не думаю, что это важно, так как я бегу команды оболочки из кода).
  • HTTP-сервер: https://www.npmjs.com/package/http-server

Мой код в Эрл:

my_test_() -> 
    Pid = spawn(fun() -> 
      Info = os:cmd("http-server -p 8484 test/resources"), 
      io:format(user,"*** Server: ~p~n",[Info]) 
     end), 

%%% Do some job %%% 

    Pid2 = spawn(fun() -> 
      Info = os:cmd("http-server stop"), 
      timer:sleep(200), 
      io:format(user,"*** Server stop: ~p~n",[Info]) 
     end), 
    timer:sleep(200), 
    exit(Pid2, kill), 
    exit(Pid, kill). 

ответ

1

Использование:

kill -9 {pid} 

Кроме того, из интереса, если вы хотите увидеть все процессы, запущенные на конкретный порт, использование:

lsof -i :{port} 

EDIT: Использование убить -9 ... немного резок, я знаю, есть, вероятно, более изящный способ сделать это, но это получить работу ;-)

+0

спасибо за ответ. Это не помогает использовать erlang. Я редактирую свой вопрос, чтобы он дал понять – inbaly

0

Вы можете используйте perc - поскольку HTTP-сервер Node.js не является процессом Erlang, но Unix-процесс, вам нужно использовать модуль (или копать его код, чтобы увидеть реализацию;)).

В качестве альтернативы, от Erlang os:cmd("kill -9 5607"). (где 5607 - ваш unix pid);

Смежные вопросы