【问题标题】:How to kill a process on a port on ubuntu如何在ubuntu上杀死端口上的进程
【发布时间】:2012-03-09 21:54:44
【问题描述】:

我正在尝试在命令行中为 ubuntu 中的特定端口杀死一个进程。

如果我运行这个命令,我会得到端口:

sudo lsof -t -i:9001

所以...现在我想运行:

sudo kill 'sudo lsof -t -i:9001'

我收到此错误消息:

ERROR: garbage process ID "lsof -t -i:9001".
Usage:
  kill pid ...              Send SIGTERM to every process listed.
  kill signal pid ...       Send a signal to every process listed.
  kill -s signal pid ...    Send a signal to every process listed.
  kill -l                   List all signal names.
  kill -L                   List all signal names in a nice table.
  kill -l signal            Convert between signal numbers and names.

我也试过sudo kill 'lsof -t -i:9001'

【问题讨论】:

  • 仅供参考,Ubuntu 问题更有可能在 StackExchange (StackOverflow) 网络的 Ubuntu 部分得到解答:askubuntu.com
  • 老实说,你应该使用 fuser,因为它很简单,但无论如何。

标签: ubuntu port kill


【解决方案1】:

您想使用反引号而不是常规刻度:

sudo kill -9 `sudo lsof -t -i:9001`

如果这不起作用,您还可以使用$() 进行命令插值:

sudo kill -9 $(sudo lsof -t -i:9001)

【讨论】:

  • 您忘记添加信号选项。应阅读:sudo kill -9 $(sudo lsof -t -i:9001)
  • @FrancescoGramano:除非必须,否则不要使用 -9。
  • sudo kill 无法杀死进程时,@putra.koreng 的方法效果很好
  • 如果上述方法不起作用,请尝试以下操作:stackoverflow.com/a/50515868/9339242
  • 这个操作系统是独立的还是特定于 Linux 的?如果特定于 Linux,那么即使这个命令也可以工作 os.system("fuser -k 8080/tcp");
【解决方案2】:

你可以使用

fuser -n tcp -k 9001 

see more details in wikipedia

【讨论】:

  • 如果不是root:sudo fuser -n tcp -k 9001
【解决方案3】:

对于 Ubuntu 1- 查找正在使用 pro 的应用程序/进程,键入:

sudo netstat -lpn |grep :8080

然后按 Enter。

你会得到一个类似这个的输出

tcp6       0      0 :::8080                 :::*                    LISTEN      6782/java

2- 我得到了进程 ID,即 6782,现在这是使用端口 8080 的进程。

3- 终止进程,输入:kill -p 6782

kill -9 6782

【讨论】:

  • 这对我不起作用。甚至我试图在 Ubuntu 20.04 上用 sudo 杀死进程
  • @MuhammadTariq 尝试使用 kill -9 {PID}
  • 第 3 步:回复:kill -p 6782 by:kill -9 6782 -> 它对我有用
  • 我使用了 sudo 并且成功了
【解决方案4】:

在 Ubuntu 终端中杀死端口的最佳方法是使用 fuser 命令;例如:

fuser -k 9001/tcp

默认发送SIGKILL

【讨论】:

    【解决方案5】:

    有些进程使用普通的 netstat 命令没有显示出来,所以你必须使用sudo 来检查它。

    sudo netstat -lpn |grep :8080。系统运行的进程不显示 PID,要获取此进程的 PID,您必须使用 sudo 运行它

    然后使用端口8080 杀死进程。您可能还必须在此处使用sudo。所以要杀死这个进程使用sudo kill -9 PID

    【讨论】:

      【解决方案6】:

      杀死一个在端口号9001上运行的进程

      sudo kill -9 $(sudo lsof -t -i:9001)
      
      
      lsof   - list of files(Also used for to list related processes)
      
      -t     - show only process ID
      
      -i     - show only internet connections related process
      
      :9001  - show only processes in this port number
      
      kill   - command to kill the process
      
      -9     - forcefully
      
      sudo   - command to ask admin privilege(user id and password).
      

      更多信息可以访问我的blog

      【讨论】:

        【解决方案7】:

        使用killport 命令:

        sh killport 9001 
        

        要下载shell,你可以使用wget

        wget https://cdn.rawgit.com/abdennour/miscs.sh/e0aac343/killport
        

        【讨论】:

        • 如果不行,说明目标端口已经关闭
        【解决方案8】:

        要首先根据端口终止进程,我们必须找出给定端口的相关 pid 并使用该 pid 终止,

        在我的情况下,我想获取 3000 端口的 pid(进程 ID):

        netstat -ltnp | grep -w '3000'
        

        然后找到正在监听tcp的pid

        tcp6       0      0 :::3000                 :::*                    LISTEN      29972/node  
        

        你会得到 pid 29972

        要杀死这个 pid 使用下面的命令

        kill -9 29972
        

        基于端口的kill进程伪代码

         netstat -ltnp | grep -w 'PORT'
        

        kill -9 PID
        

        【讨论】:

          【解决方案9】:

          使用这个:

          sudo kill -9 $(lsof -t -i:9001)
          

          【讨论】:

            【解决方案10】:

            杀死端口:

            sudo 显示进程 ID 很重要。

            $ sudo netstat -antlp | grep 45136
            tcp      0      0 0.0.0.0:45136         0.0.0.0:*        LISTEN           **-** 
            
            $ kill -9 45136
            

            【讨论】:

              【解决方案11】:

              使用命令

               netstat -plten |grep java
              

              使用 grep java 作为 tomcat 使用 java 作为其进程。

              它将显示带有端口号和进程ID的进程列表

              tcp6       0      0 :::8080                 :::*                    LISTEN      
              1000       30070621    16085/java
              

              /java 前面的数字是进程 ID。现在使用 kill 命令杀死进程

              kill -9 16085
              

              -9 表示进程将被强制终止。

              【讨论】:

                【解决方案12】:

                如果我是你,我会使用

                fuser -k -n tcp PORT
                kill -9 PID
                

                【讨论】:

                  【解决方案13】:

                  只需在终端输入以下命令

                  kill -9 $(lsof -t -i:3000)
                  

                  【讨论】:

                    【解决方案14】:

                    试试这个:

                    lsof -i :port
                    
                    or 
                    
                    sudo kill $(sudo lsof -t -i:8000)
                    
                    or
                    
                    kill -9 <pid>
                    
                    or 
                    
                    sh killport 8000
                    

                    【讨论】:

                    • 我在 Ubuntu 17 上,kill -9 &lt;pid&gt; 非常适合我!
                    【解决方案15】:

                    它给了我一个错误OSError: [Errno 98] Address already in use。使用以下方法解决了我在 Ubuntu 中的错误。(VERSION="18.04.4 LTS (Bionic Beaver)")

                    $ sudo netstat -lpn |grep :5000
                    tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      25959/uwsgi   
                    
                    $ fuser -k -n tcp 5000
                    5000/tcp:            25959
                     
                    

                    希望对某人有所帮助!

                    【讨论】:

                      【解决方案16】:
                      sudo kill `sudo lsof -t -i:9001`
                      

                      您不必添加-9signal 选项

                      【讨论】:

                        【解决方案17】:

                        xargs 可能是一个非常有用的命令。

                        你可以像这样使用管道命令

                        lsof -t -i :9001 | xargs sudo kill
                        

                        它的作用: 它获取第一个命令的输出,在这种情况下,进程在端口上运行,并将其传递给sudo kill

                        【讨论】:

                          【解决方案18】:

                          sudo kill -9 $(sudo lsof -t -i:9001) 为我工作或 你可以使用

                          sudo kill -9 `sudo lsof -t -i:9001` 
                          

                          用你想要的端口号替换 9001。

                          【讨论】:

                            【解决方案19】:

                            它的两个步骤过程:

                            1. 知道端口号上的进程 ID。 8080(可以是任何)
                            2. 杀死那个 id 8689 的进程(可以不同)

                              fuser -n tcp 8080
                              
                              #o/p 8080/tcp    8689
                              
                              kill -9 8689
                              

                            【讨论】:

                              【解决方案20】:

                              你可以使用节点来解决这个问题

                              npm install freethenport -g
                              

                              然后

                              node freethenport 9001
                              

                              【讨论】:

                                【解决方案21】:

                                显示活动的 TCP 连接、计算机正在侦听的端口。

                                netstat -tupln
                                

                                它会列出你所有的 pid 连接。找到并复制 pid 并运行以下命令。确保在以下命令中将 id 替换为实际 id。

                                kill -9 <copied pid>
                                

                                -9 用于强行终止连接。

                                【讨论】:

                                  【解决方案22】:

                                  使用较新版本的 Ubuntu 时,您将不再使用 netcat,而是使用 ss

                                  ss -lptpn | grep 9001   
                                  sudo kill <replace-with-process-id>
                                  

                                  【讨论】:

                                    【解决方案23】:

                                    您可以在终端中使用以下命令
                                    fuser -k 3000/tcp

                                    【讨论】:

                                      【解决方案24】:
                                      • 获取在端口 3000 上运行的进程的 PID:

                                        lsof -i tcp:3000

                                      • 杀死进程

                                        kill -9 process_id

                                      示例:
                                      lsof -i tcp:3000
                                      (输出中的PID = 5805)
                                      kill -9 5805

                                      如果需要,请使用sudo

                                      【讨论】:

                                        猜你喜欢
                                        • 2016-07-21
                                        • 1970-01-01
                                        • 2018-01-06
                                        • 2021-08-14
                                        • 2020-06-08
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2012-07-19
                                        相关资源
                                        最近更新 更多