我正在编写一个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脚本运行。
有人可以告诉我发生了什么事吗?为什么要切换端口?我怎么才能杀死我的服务器端口?
答案 0 :(得分:2)
我不喜欢它的切换端口;它还在监听8000端口。在我看来,有两件事正在发生:
ruby进程(PID 25560)正在连接localhost:8000(来自端口45789,可能是动态分配的)。也就是说,ruby正在端口8000上与服务器建立正常连接。
请注意,java进程拥有localhost:8000< - > localhost:45789 TCP会话的端口8000端,而ruby进程拥有端口45789 end。
ruby进程的连接是否以某种方式是杀死信号的结果,或者只是它几乎同时发生的事情,我无法告诉你。