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

Trying to kill process on port 8000 confusion

我正在编写一个 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 脚本 运行。

谁能告诉我这是怎么回事?为什么要切换端口?我怎样才能只杀死我的服务器端口?

在我看来它不像是在切换端口;它仍在侦听端口 8000。在我看来,有两件事正在发生:

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

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

ruby 进程的连接是 kill 信号的某种结果,还是恰好同时发生的事情,我无法告诉你。