如何确定Linux中哪个进程正在使用某个端口

问题描述 投票:0回答:6

我目前正在其默认端口上运行 RethinkDB,因为如果我将浏览器指向

localhost:8080
,我会看到 RethinkDB Web 界面:

enter image description here

我想关闭 RethinkDB 并使用

--port-offset
参数在另一个端口上重新打开它。然而,到目前为止,我还无法使用
conn.close()
方法从 Python 中关闭它。

相反,我想通过简单地终止使用该端口的进程来尝试暴力方法。我尝试使用

netstat
来确定哪个过程,但这不会产生任何结果:

kurt@kurt-ThinkPad:~$ netstat -a | grep 8080
kurt@kurt-ThinkPad:~$ 

如何终止 RethinkDB 进程以使端口再次可用?

python linux rethinkdb
6个回答
12
投票
1.  lsof -i:8080
2.  kill $(lsof -t -i:8080)
or
2 . kill -9 $(lsof -t -i:8080)

1
投票

找出被指控者的 pid 或有关特定端口的所有信息

sudo lsof -i :PORT_NUMBER

终止进程或事件

kill -9 PID

示例:-

harshit@harshit:~/Desktop/edwin-diaz/cms$ lsof -i :4111
COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    9215 harshit   33u  IPv6 297470      0t0  TCP *:4111 (LISTEN)
harshit@harshit:~/Desktop/edwin-diaz/cms$ kill -9 9215

0
投票

根据 Klaus D. 的评论,我使用

netstat -nlp
:

确定了该过程
kurt@kurt-ThinkPad:~$ netstat -nlp | grep 8080
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.1.1:8080          0.0.0.0:*               LISTEN      2229/rethinkdb  
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      2229/rethinkdb  
tcp6       0      0 ::1:8080                :::*                    LISTEN      2229/rethinkdb 

参数代表

  • numeric
    (显示数字地址,而不是尝试确定符号主机、端口或用户名)
  • listening
    (仅显示监听套接字(默认情况下省略这些))
  • program
    (显示每个socket所属程序的PID和名称)

分别。


0
投票

很棒的答案@codespy。 我做了一个bash文件并这样写。

!/bin/bash

杀死 $(lsof -t -i :8000)

并保存它和脚本文件。

并通过以下方式使其可执行 $chmod +x 脚本文件名

现在我只需输入即可运行 ./脚本文件名


0
投票

有一个简单的解决方案,有些 Unix/Linus 有命令 ss,这是类似于 netstat 的新一代命令,你可以简单地输入以下内容:

ss -ltnp

-p
列出进程号

-l
列出监听套接字

-t
列出 TCP 套接字

-n
列出端口号而不是常规名称(21 代替 ssh)

查看手册页以获取更多信息


0
投票

PortsInfo是一款专门为回答这个问题而构建的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.