要查看阻止端口的进程:
netstat -vanp tcp | grep 3000
要杀死阻塞端口的进程:
kill $(lsof -t -i :3000)
你可以试试 netstat
netstat
对于 的 macOS El Capitan 强> 更新(或者如果你的netstat不支持 -p ), 使用 lsof
-p
lsof
sudo lsof -i tcp:3000
对于 的 Centos 7 强> 使用
netstat -vanp --tcp | grep 3000
的 找到开放的连接 强>
lsof -i -P | grep -i“听”
的 杀死进程ID 强>
杀死-9'PID'
如果你想要一个免费的代码方式 - 打开活动管理器和强制kill节点:)
找到并杀死:
这个单一的命令行很简单,工作正常。
kill -9 $(lsof -ti tcp:3000)
你应该尝试这个,这种技术是OS独立的。
在您的应用程序旁边有一个名为tmp的文件夹,里面有另一个名为pids的文件夹。 该文件包含服务器pid文件。 只需删除该文件即可。端口自动杀死自己。
我认为这是一种简单的方法。
上面没有任何东西对我有效。有我经验的任何人都可以尝试以下(为我工作):
跑:
lsof -i :3000 (where 3000 is your current port in use)
然后检查报告的PID的状态:
ps ax | grep <PID>
最后,“用它来做”:
kill -QUIT <PID>
使用以下命令终止端口3000上的进程 kill $(lsof -t -i:3000)
kill $(lsof -t -i:3000)
添加 ~/.bash_profile :
~/.bash_profile
function killTcpListen () { kill -QUIT $(sudo lsof -sTCP:LISTEN -i tcp:$1 -t) }
然后 source ~/.bash_profile 并运行
source ~/.bash_profile
killTcpListen 8080
运用 sindresorhus 的 fkill 工具,你可以这样做:
$ fkill :3000
在你的 .bash_profile ,创建一个快捷方式 terminate 3000过程:
.bash_profile
terminate
terminate(){ lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9 }
然后,打电话 $terminate 如果它被阻止了
$terminate
实现这一目标的可能方法:
的 最佳 强>
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
您应该使用终端尝试此代码:
$ killall -9 ruby
lsof -P | grep ':3000' | awk '{print $2}'
这将为您提供在MacOS上测试的pid。
TL; DR:
lsof -ti tcp:3000 -sTCP:LISTEN | xargs kill
如果您处于使用该端口的客户端和服务器的情况,例如:
$ 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 简洁的格式你可以自动杀死进程:
-sTCP:LISTEN
-t
找到PID并终止进程。
lsof -ti:3000 | xargs kill
使用端口3000提取进程的PID并使其终止的单行程序。
-t标志从lsof输出中删除除PID之外的所有内容,从而可以轻松地将其删除。
这是一个帮助程序bash函数,用于按名称或端口终止多个进程
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
第1步:查找正在运行的服务器: ps aux | grep puma 第2步:杀死那些服务器 杀掉-9 [服务器编号]
ps aux | grep puma
简易解决方案 使用单行命令终止多个端口。
kill $(lsof -t -i:3000,3001) // 3000 and 3001 are the ports to be freed
lsof -t -i:3000
82500
lsof -t -i:3001
82499
lsof -t -i:3001,3000
82499 82500
杀$(lsof -t -i:3001,3000)
在单个命令中终止进程82499和82500。
lsof -t -i:3000 lsof -t -i:3001
我为此做了一个小功能,将它添加到你的rc文件中( .bashrc , .zshrc 管他呢)
.bashrc
.zshrc
function kill-by-port { if [ "$1" != "" ] then kill -9 $(lsof -ni tcp:"$1" | awk 'FNR==2{print $2}') else echo "Missing argument! Usage: kill-by-port $PORT" fi }
然后你可以输入 kill-by-port 3000 杀死你的rails服务器(用3000代替它正在运行的任何端口)
kill-by-port 3000
没错,你总是可以输入 kill -9 $(cat tmp/pids/server.pid) 来自rails根目录
kill -9 $(cat tmp/pids/server.pid)
在OS-X El Captain上的命令行执行:
kill -kill `lsof -t -i tcp:3000`
lsof的Terse选项只返回PID。