【问题标题】:How to determine which process is using a port in Linux如何确定Linux中哪个进程正在使用端口
【发布时间】:2016-10-11 09:34:16
【问题描述】:

我目前在其默认端口上运行 RethinkDB,因为如果我将浏览器指向 localhost:8080,我会看到 RethinkDB 网络界面:

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

相反,我想通过简单地终止使用该端口的进程来尝试蛮力方法。我试图通过使用netstat 来确定哪个进程,但这并没有带来任何结果:

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

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

【问题讨论】:

  • netstat -nlp。最好使用sudo

标签: python linux rethinkdb


【解决方案1】:
1.  lsof -i:8080
2.  kill $(lsof -t -i:8080)
or
2 . kill -9 $(lsof -t -i:8080)

【讨论】:

    【解决方案2】:

    根据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和名称)

    分别。

    【讨论】:

      【解决方案3】:

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

      !/bin/bash

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

      并保存它和脚本文件。

      并且通过 $chmod +x 脚本文件名

      现在我只需输入即可运行 ./script_filename

      【讨论】:

        【解决方案4】:

        找出被指控者的特定端口的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
        

        【讨论】:

          【解决方案5】:

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

          ss -ltnp
          

          -p列出进程号

          -l 列出监听套接字

          -t 列出 tcp 套接字

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

          查看手册页了解更多信息

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-08-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-12-16
            • 1970-01-01
            • 1970-01-01
            • 2013-02-11
            相关资源
            最近更新 更多