我目前正在其默认端口上运行 RethinkDB,因为如果我将浏览器指向
localhost:8080
,我会看到 RethinkDB Web 界面:
我想关闭 RethinkDB 并使用
--port-offset
参数在另一个端口上重新打开它。然而,到目前为止,我还无法使用 conn.close()
方法从 Python 中关闭它。
相反,我想通过简单地终止使用该端口的进程来尝试暴力方法。我尝试使用
netstat
来确定哪个过程,但这不会产生任何结果:
kurt@kurt-ThinkPad:~$ netstat -a | grep 8080
kurt@kurt-ThinkPad:~$
如何终止 RethinkDB 进程以使端口再次可用?
1. lsof -i:8080
2. kill $(lsof -t -i:8080)
or
2 . kill -9 $(lsof -t -i:8080)
找出被指控者的 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
根据 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和名称)分别。
很棒的答案@codespy。 我做了一个bash文件并这样写。
杀死 $(lsof -t -i :8000)
并保存它和脚本文件。
并通过以下方式使其可执行 $chmod +x 脚本文件名
现在我只需输入即可运行 ./脚本文件名
有一个简单的解决方案,有些 Unix/Linus 有命令 ss,这是类似于 netstat 的新一代命令,你可以简单地输入以下内容:
ss -ltnp
-p
列出进程号
-l
列出监听套接字
-t
列出 TCP 套接字
-n
列出端口号而不是常规名称(21 代替 ssh)
查看手册页以获取更多信息
PortsInfo是一款专门为回答这个问题而构建的应用程序。