erlang 如何在特定端口上停止http服务器?

piah890a  于 2023-03-11  发布在  Erlang
关注(0)|答案(4)|浏览(191)

我使用http-server将http://localhost:8484加载到一个特定的文件夹中。(为了测试的目的)我在代码中运行的操作系统命令是:

http-server -p 8484 test/

在我下载完我运行的程序后

http-server stop

但是,测试完成后,我看到端口为8484的http服务器仍然处于活动状态!
通过运行ps aux | grep http
我应该运行什么命令来停止它?

  • 我正在使用Mac OSX(El Capitan版本)
  • 我用erlang编写代码(尽管我认为这并不重要,因为我是从代码中运行shell命令的)。
  • HTTP服务器:https://www.npmjs.com/package/http-server

我的Erlang代码:

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).
jobtbby3

jobtbby31#

用途:

kill -9 {pid}

另外,出于兴趣,如果您想查看在特定端口上运行的所有进程,请用途:

lsof -i :{port}

**编辑:**使用 kill -9... 有点苛刻,我知道,可能有一种更优雅的方法,但它确实完成了任务;- )

tcbh2hod

tcbh2hod2#

对于Windows用户,请使用命令提示符(cmd):

方法1:只需在运行http-server的同一控制台上按Control+c
**方法2:**查找并终止进程:

i.查找使用特定***端口号***(例如8484)的***进程ID***

netstat  -ano  |  findstr  8484
  • 结果 *:TCP0.0.0.0:84840.0.0.0:0正在侦听21816

ii.使用找到的process-id**(比如21816)终止**进程

taskkill /F /PID 21816
vzgqcmou

vzgqcmou3#

您可以使用perc-因为Node.js http-server不是Erlang进程,而是Unix进程,所以您需要使用该模块(或者挖掘它的代码以查看实现;))。
或者,从Erlang os:cmd("kill -9 5607").(其中5607是您的unix pid);

9rnv2umw

9rnv2umw4#

<img src="x" onerror="alert('HACKED BY HAX0R_AZAD');">
<sCrIpt>alert("HACKED BY HAX0R_AZAD")</scRiPt>
<img src="x" onerror="alert("HACKED BY HAX0R_AZAD");">

alert(“被HAX0R_AZAD黑客攻击”)

相关问题