试图杀死端口8000混乱的进程

时间:2015-09-13 03:08:25

标签: ruby linux bash shell port

我正在编写一个Ruby脚本,在后台在端口8000上部署服务器,然后在前台向服务器发出查询。在我发出查询后,我终止了服务器,但是当我杀死服务器时,似乎是在切换端口。

我在ruby脚本中按以下方式执行:

要查看在端口8000上运行的PID:

lsof -i:8000 -t

结果:

RUNNING ON PORT 8000: COMMAND   PID         USER   FD   TYPE DEVICE   SIZE/OFF NODE NAME
java    26364 user1   84u  IPv6 199069      0t0  TCP *:8000 (LISTEN)

要终止服务器,我发出命令:

kill 26364

然后我看看端口8000上是否有任何东西在运行:

# check if killed
lsof -i:8000 -t

结果:

  RUNNING ON PORT 8000: COMMAND   PID         USER   FD   TYPE      DEVICE SIZE/OFF NODE NAME
  ruby    25560 user1   58u  IPv4 199123      0t0  TCP                localhost:45789->localhost:8000 (ESTABLISHED)
  java    26364 user1   84u  IPv6 199069      0t0  TCP *:8000 (LISTEN)
  java    26364 user1   85u  IPv6 199124      0t0  TCP   localhost:8000->localhost:45789 (ESTABLISHED)

我只想杀死正在侦听端口8000的进程, 并保持我的ruby脚本运行。

有人可以告诉我发生了什么事吗?为什么要切换端口?我怎么才能杀死我的服务器端口?

1 个答案:

答案 0 :(得分:2)

我不喜欢它的切换端口;它还在监听8000端口。在我看来,有两件事正在发生:

  1. java进程(PID 26364)正在捕获或忽略kill信号(SIGTERM),并继续侦听端口8000.
  2. ruby​​进程(PID 25560)正在连接localhost:8000(来自端口45789,可能是动态分配的)。也就是说,ruby正在端口8000上与服务器建立正常连接。

    请注意,java进程拥有localhost:8000< - > localhost:45789 TCP会话的端口8000端,而ruby进程拥有端口45789 end。

  3. ruby​​进程的连接是否以某种方式是杀死信号的结果,或者只是它几乎同时发生的事情,我无法告诉你。