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