当前位置:  开发笔记 > 编程语言 > 正文

在Mac上查找(并终止)进程锁定端口3000

如何解决《在Mac上查找(并终止)进程锁定端口3000》经验,为你挑选了21个好方法。

如何查找侦听/使用我的tcp端口的进程?我在mac os x上.

有时,在崩溃或一些错误后,我的rails应用程序锁定端口3000.我找不到它使用ps -ef ...我怎么找到愚蠢的东西并杀死它,残忍......?

做的时候

rails server

我明白了

已经在使用的地址 - bind(2)(Errno :: EADDRINUSE)

2014年更新:

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



1> ghostdog74..:

    你可以试试 netstat

    netstat -vanp tcp | grep 3000
    

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

    sudo lsof -i tcp:3000 
    

    对于Centos 7使用

    netstat -vanp --tcp | grep 3000
    


lsof的"简洁"标志产生的输出适合于随后的杀戮:`lsof -t -i tcp:1234 | xargs杀死`
谢谢!你的答案催生了我的"death_to'port'"脚本.(#!/ usr/bin/ruby​​`lsof -t -i tcp:#{ARGV.first} | xargs kill`)
另一个提示:如果你没有看到任何输出,请务必在lsof之前尝试`sudo`
另一个提示是将`-P`添加到`lsof`命令,以便原始端口在输出中可见:`lsof -P -i:3000`
我已经将它放入我的〜/ .bash_profile`中: findandkill`所以现在我只需要输入`killport 8080`即可节省几秒钟
Sudo ftw !! 在macos sierra上,没有sudo,我没有输出lsof

2> Filip Spirid..:

找:

sudo lsof -i :3000

杀:

kill -9 


有时**lsof -i:port**将不显示任何内容.试试**sudo lsof -i:port**.
为了安全起见,建议在使用`-9`之前尝试`kill -15 `.
@MichaelTrouw差不多一年后,但这是你的回答.:-) http://unix.stackexchange.com/a/8918 TL; DR`kill -15`让这个过程有机会自行清理.
@Jamon Holmgren为什么?两者都做什么?为什么```kill ```不够/危险/不完整?
我认为这个答案应该说'-9`的作用.
请不要在不考虑两次的情况下使用`kill -9`,并先尝试其他信号.它会导致一个进程立即退出,不会自行清理,可能会留下一个烂摊子或使数据库处于不一致的状态...尝试一个TERM(默认为`kill`,不需要标记)或QUIT(`kill -3 pid`)至少是第一个,并在发送KILL之前检查你正在处理的进程.

3> Austin..:

上面没有任何东西对我有效.有我经验的任何人都可以尝试以下(为我工作):

跑:

lsof -i :3000 (where 3000 is your current port in use)

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

ps ax | grep 

最后,"用它来做":

kill -QUIT 


这实际上似乎比Filip Spiridonov稍后提供的更好的答案,Filip Spiridonov有277票赞成你的9.你的是6个月之前,并且有相同的信息和更多的解释.没有正义......

4> Zlemini ..:

使用端口3000提取进程的PID并使其终止的单行程序.

lsof -ti:3000 | xargs kill

-t标志从lsof输出中删除除PID之外的所有内容,从而可以轻松地将其删除.


您可以使用以下命令过滤掉"监听"端口:`lsof -ti:3000 -sTCP:LISTEN`

5> DerMike..:

你可以用lsof -i:3000.

那就是"列出打开文件".这将为您提供进程列表以及它们使用的文件和端口.



6> Bruno Lemos..:

这个命令行很容易记住:

npx kill-port 3000

对于搜索功能更强大的工具:

npx fkill-cli


PS:他们使用第三方javascript包

来源: 推文 | github上



7> Abhijith Sas..:

最简单的解决方案

对于单端口:

kill $(lsof -ti:3000)  #3000 is the port to be freed

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

kill $(lsof -ti:3000,3001)  #3000 and 3001 are the ports to be freed

lsof -ti:3000

82500(进程ID)

lsof -ti:3001

82499

lsof -ti:3001,3000

82499 82500

杀死$(lsof -ti:3001,3000)

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

package.json脚本中使用此命令:

"scripts": { "start": "kill $(lsof -ti:3000,3001) && npm start" }



8> alexzg..:

在您的中.bash_profile,为terminate3000流程创建快捷方式:

terminate(){
  lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9 
}

然后,$terminate如果它被阻止,请打电话.


您可以为任何端口提供足够的灵活性:https://github.com/kevinSuttle/dotfiles/commit/9458141f40094d96952adc7c423cbdddeb909a81

9> Tadele Ayele..:

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

lsof -n -i4TCP:3000 

其中3000是进程运行的端口号

这将返回进程ID(PID)并运行

kill -9 "PID"

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

对于Instance,如果我想杀死在端口8080上运行的进程



10> Kris..:
lsof -P | grep ':3000' | awk '{print $2}'

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


在MAC上杀死端口3000上的所有pid:lsof -P | grep':3000'| awk'{print $ 2}'| xargs kill -9
这是一个工作:`lsof -n -iTCP:3407 -sTCP:LISTEN -n -l -P | grep'LISTEN'| awk'{print $ 2}'| xargs kill -9`

11> YBathia..:

杀死端口进程的方法之一是使用python库:freeport(https://pypi.python.org/pypi/freeport/0.1.9).安装完成后,只需:

# install freeport
pip install freeport

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


到目前为止,这不是最简单的方法.upvoted回复不要求您下载和安装任何东西.
满足先决条件时,这非常简单易记.我们对"最简单"有不同的定义,这个答案是完全有效和恰当的.也许它只是缺少用pip安装freeport的说明.

12> JE42..:

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

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

lsof的Terse选项只返回PID.



13> Henry..:

要查看阻止端口的进程:

netstat -vanp tcp | grep 3000

要杀死阻塞端口的进程:

kill $(lsof -t -i :3000)



14> Sourabh Bhag..:

找到开放的连接

lsof -i -P | grep -i"听"

杀死进程ID

杀死-9'PID'



15> Rahul Garg..:

找到PID并终止进程.

lsof -ti:3000 | xargs kill



16> 小智..:

找到并杀死:

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

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



17> smooth..:

实现这一目标的可能方法:

最佳

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 -i tcp:3000 



18> 小智..:

lsof -i tcp:port_number -将列出在该端口上运行的进程

kill -9 PID -将杀死进程

在你的情况下,它将是

lsof -i tcp:3000 从您的终端中找到过程的PID

kill -9 PID



19> 小智..:

这两个命令将帮助您查找和终止服务器进程

    lsof -wni tcp:3000

    杀死-9 pid



20> rofrol..:

添加到~/.bash_profile:

function killTcpListen () {
  kill -QUIT $(sudo lsof -sTCP:LISTEN -i tcp:$1 -t)
}

然后source ~/.bash_profile

killTcpListen 8080



21> Kodie Granth..:

使用sindresorhus的fkill工具,你可以这样做:

$ fkill :3000

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有