2017-02-23 875 views
0

我正在使用http-server为了在特定文件夹中加载http://localhost:8484。 (出于测试目的) 我在我的代码运行操作系统命令:如何停止特定端口上的http-server?

http-server -p 8484 test/ 

,我下载完以后不管我跑:

http-server stop 

然而,测试完成后,我看到了端口8484的http-server仍然活着!

运行ps aux | grep http

我应该以阻止它运行什么命令?

  • 我使用的是Mac OSX(埃尔卡皮坦版)
  • 我写在二郎的代码(虽然我不认为它很重要,因为我正在从代码shell命令)。
  • 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} 

编辑:使用杀-9 ...是有点苛刻,我知道,有可能是做的更优雅的方式,但它确实把工作做好;-)

+0

感谢您的回答。这对使用erlang没有帮助。我正在编辑我的问题以说清楚 – inbaly

0

你可以使用perc - 因为Node.js http-server不是Erlang进程,而是Unix进程,所以需要使用该模块(或者挖掘它的代码来查看实现;))。

或者,从Erlang os:cmd("kill -9 5607").(其中5607是你的unix pid);