Macos 在Mac上查找(并杀死)进程锁定端口3000

Macos 在Mac上查找(并杀死)进程锁定端口3000,macos,process,Macos,Process,如何查找(并杀死)侦听/使用tcp端口的进程?我在mac os x上 有时,在崩溃或出现错误后,我的rails应用程序会锁定端口3000。我找不到它使用ps-ef 当做 rails server 我明白了 地址已在使用中-绑定(2)(错误号::EADDRINUSE) 2014年更新: 要完成以下部分回答:执行kill命令后,可能需要删除pid文件rm~/mypath/myrailsapp/tmp/pids/server.pid您可以使用lsof-i:3000 即“列出打开的文件”。这将为您提供

如何查找(并杀死)侦听/使用tcp端口的进程?我在mac os x上

有时,在崩溃或出现错误后,我的rails应用程序会锁定端口3000。我找不到它使用ps-ef

当做

rails server
我明白了

地址已在使用中-绑定(2)(错误号::EADDRINUSE)

2014年更新:


要完成以下部分回答:执行kill命令后,可能需要删除pid文件
rm~/mypath/myrailsapp/tmp/pids/server.pid

您可以使用
lsof-i:3000

即“列出打开的文件”。这将为您提供进程列表以及它们使用的文件和端口

  • 您可以尝试
    netstat

     netstat -vanp tcp | grep 3000
    
  • 对于macOS El Capitan和更新版本(或者如果您的netstat不支持
    -p
    ),请使用
    lsof

     lsof -i tcp:3000 
    
  • 对于Centos 7使用:

     netstat -vanp --tcp | grep 3000
    

  • 这将为您提供在MacOS上测试的pid。

    以上内容对我都不起作用。任何有我经验的人都可以尝试以下方法(为我工作):

    运行:

    然后检查报告的PID的状态:

    ps ax | grep <PID>
    
    ps ax | grep
    
    最后,“开始吧”:

    kill-QUIT
    
    在您的
    .bash\u配置文件中
    终止
    进程创建一个快捷方式:

    terminate(){
      lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9 
    }
    
    然后,如果被阻止,请调用
    $terminate

    查找:

    sudo lsof -i :3000
    
    杀死:

    kill-9
    
    在端口上终止进程的方法之一是使用python库:freeport()。一旦安装,只需:

    # install freeport
    pip install freeport
    
    # Once freeport is installed, use it as follows
    $ freeport 3000
    Port 3000 is free. Process 16130 killed successfully
    

    在OS-X El Captain上的命令行中执行:

    kill -kill `lsof -t -i tcp:3000`
    

    lsof的简洁选项仅返回PID。

    查找打开的连接

    lsof-i-p | grep-i“倾听”

    按进程ID终止

    杀死-9‘PID’


    使用端口3000提取进程PID并终止它的一个线性程序

    lsof -ti:3000 | xargs kill
    

    -t标志从lsof输出中删除除PID之外的所有内容,使其易于终止。

    实现此目的的可能方法:

    顶部

    top命令是查看系统资源使用情况并查看占用系统资源最多的进程的传统方式。Top显示进程列表,其中使用最多CPU的进程位于顶部

    ps

    ps命令列出正在运行的进程。以下命令列出了系统上运行的所有进程:

    ps -A
    
    您还可以通过grep管道输出以搜索特定进程,而无需使用任何其他命令。以下命令将搜索Firefox进程:

    ps -A | grep firefox
    
    向程序传递信号的最常见方式是使用kill命令

    kill PID_of_target_process
    
    lsof

    所有打开的文件以及打开它们的进程的列表

    lsof -i -P | grep -i "listen"
    kill -9 PID
    


    要强制终止这样的进程,请使用以下命令

    lsof -n -i4TCP:3000  
    
    OR lsof -i:3000
    
    其中3000是进程正在运行的端口号

    这将返回进程id(PID) 跑

    将PID替换为运行第一个命令后获得的数字


    添加到
    ~/.bash\u配置文件中

    函数killTcpListen(){ kill-QUIT$(sudolsof-sTCP:LISTEN-itcp:$1-t) } 然后
    source~/.bash\u profile
    并运行

    使用的工具,您可以执行以下操作:

    $ fkill :3000
    
    TL;博士:

    如果您的客户端和服务器都在使用该端口,例如:

    $ lsof -i tcp:3000
    COMMAND     PID         USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
    node       2043 benjiegillam   21u  IPv4 0xb1b4330c68e5ad61      0t0  TCP localhost:3000->localhost:52557 (ESTABLISHED)
    node       2043 benjiegillam   22u  IPv4 0xb1b4330c8d393021      0t0  TCP localhost:3000->localhost:52344 (ESTABLISHED)
    node       2043 benjiegillam   25u  IPv4 0xb1b4330c8eaf16c1      0t0  TCP localhost:3000 (LISTEN)
    Google    99004 benjiegillam  125u  IPv4 0xb1b4330c8bb05021      0t0  TCP localhost:52557->localhost:3000 (ESTABLISHED)
    Google    99004 benjiegillam  216u  IPv4 0xb1b4330c8e5ea6c1      0t0  TCP localhost:52344->localhost:3000 (ESTABLISHED)
    
    那你可能不想两个都杀了

    在这种情况下,您可以使用
    -sTCP:LISTEN
    仅显示正在侦听的进程的pid。结合
    -t
    简洁的格式,您可以自动终止进程:

    lsof -ti tcp:3000 -sTCP:LISTEN | xargs kill
    

    我为此做了一个小函数,将它添加到您的rc文件(
    .bashrc
    .zshrc
    或其他任何文件)

    然后,您只需键入
    kill by port 3000
    即可终止rails服务器(用3000替换它运行的任何端口)


    否则,您可以从rails根目录键入
    kill-9$(cat tmp/pids/server.pid)
    ,这一命令行很容易记住:

    npx终止端口3000

    您还可以一次杀死多个端口:

    npx终止端口3000 3001 3002

    要获得更强大的搜索工具,请执行以下操作:

    npx fkill cli


    PS:他们使用第三方javascript包
    npx
    内置Node.js


    资料来源:|

    您应该尝试一下,这种技术与操作系统无关

    在您的应用程序中有一个名为tmp的文件夹,其中还有一个名为pids的文件夹。 该文件包含服务器pid文件。 只需删除该文件。端口自动自杀

    我认为这是最简单的方法

    找到并杀死:


    这个单一的命令行很简单,工作正常

    kill -9 $(lsof -ti tcp:3000)
    

    这里有一个helperbash函数,可以按名称或端口终止多个进程

    fkill() {
      for i in $@;do export q=$i;if [[ $i == :* ]];then lsof -i$i|sed -n '1!p';
      else ps aux|grep -i $i|grep -v grep;fi|awk '{print $2}'|\
      xargs -I@ sh -c 'kill -9 @&&printf "X %s->%s\n" $q @';done
    }
    
    用法:

    $ fkill [process name] [process port]
    
    例如:

    $ fkill someapp :8080 node :3333 :9000
    

    要查看阻止端口的进程,请执行以下操作:

    netstat-vanp tcp|grep 3000

    要终止阻止端口的进程,请执行以下操作:


    kill$(lsof-t-i:3000)

    如果您想要一种无代码的方式-打开活动管理器并强制kill节点:)

    快速简便的解决方案

    kill $(lsof -ti:3000,3001)
    
    对于单端口:

    kill $(lsof -ti:3000)
    
    kill $(lsof -ti:3000,3001)
    
    #3000是要释放的端口

    使用单行命令杀死多个端口:

    kill $(lsof -ti:3000)
    
    kill $(lsof -ti:3000,3001)
    
    #这里,多个端口3000和3001是要释放的端口

    lsof-ti:3000

    82500(进程ID)

    lsof-ti:3001

    82499

    lsof-ti:30013000

    82499 82500

    杀死$(lsof-ti:30013000)

    在一个命令中终止82499和82500进程

    要在
    package.json
    脚本中使用此选项:


    “scripts”:{“start”:“kill$(lsof-ti:30003001)和&npm start”}
    lsof-i tcp:port\u number
    -将列出进程运行
    fkill() {
      for i in $@;do export q=$i;if [[ $i == :* ]];then lsof -i$i|sed -n '1!p';
      else ps aux|grep -i $i|grep -v grep;fi|awk '{print $2}'|\
      xargs -I@ sh -c 'kill -9 @&&printf "X %s->%s\n" $q @';done
    }
    
    $ fkill [process name] [process port]
    
    $ fkill someapp :8080 node :3333 :9000
    
    kill $(lsof -ti:3000,3001)
    
    kill $(lsof -ti:3000)
    
    kill $(lsof -ti:3000,3001)
    
    netstat -vanp tcp | grep 3000
    
    $ npx kill-port 3000 8080 8081
    
    Process on port 3000 killed
    Process on port 8080 killed
    Process on port 8081 killed
    
    killall -9 node