如何查找侦听/使用我的tcp端口的进程?我在mac os x上.
有时,在崩溃或一些错误后,我的rails应用程序锁定端口3000.我找不到它使用ps -ef ...我怎么找到愚蠢的东西并杀死它,残忍......?
做的时候
rails server
我明白了
已经在使用的地址 - bind(2)(Errno :: EADDRINUSE)
2014年更新:
要完成以下某些答案:执行kill命令后,可能需要删除pid文件 rm ~/mypath/myrailsapp/tmp/pids/server.pid
你可以试试 netstat
netstat -vanp tcp | grep 3000
对于macOS El Capitan和更新版(或者如果您的netstat不支持-p
),请使用lsof
sudo lsof -i tcp:3000
对于Centos 7使用
netstat -vanp --tcp | grep 3000
找:
sudo lsof -i :3000
杀:
kill -9
上面没有任何东西对我有效.有我经验的任何人都可以尝试以下(为我工作):
跑:
lsof -i :3000 (where 3000 is your current port in use)
然后检查报告的PID的状态:
ps ax | grep
最后,"用它来做":
kill -QUIT
使用端口3000提取进程的PID并使其终止的单行程序.
lsof -ti:3000 | xargs kill
-t标志从lsof输出中删除除PID之外的所有内容,从而可以轻松地将其删除.
你可以用lsof -i:3000
.
那就是"列出打开文件".这将为您提供进程列表以及它们使用的文件和端口.
这个命令行很容易记住:
npx kill-port 3000
对于搜索功能更强大的工具:
npx fkill-cli
PS:他们使用第三方javascript包
来源: 推文 | github上
最简单的解决方案:
对于单端口:
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"
}
在您的中.bash_profile
,为terminate
3000流程创建快捷方式:
terminate(){ lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9 }
然后,$terminate
如果它被阻止,请打电话.
要强制终止类似的进程,请使用以下命令
lsof -n -i4TCP:3000
其中3000是进程运行的端口号
这将返回进程ID(PID)并运行
kill -9 "PID"
将PID替换为运行第一个命令后得到的数字
lsof -P | grep ':3000' | awk '{print $2}'
这将为您提供在MacOS上测试的pid.
杀死端口进程的方法之一是使用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
在OS-X El Captain上的命令行执行:
kill -kill `lsof -t -i tcp:3000`
lsof的Terse选项只返回PID.
要查看阻止端口的进程:
netstat -vanp tcp | grep 3000
要杀死阻塞端口的进程:
kill $(lsof -t -i :3000)
找到开放的连接
lsof -i -P | grep -i"听"
杀死进程ID
杀死-9'PID'
找到PID并终止进程.
lsof -ti:3000 | xargs kill
找到并杀死:
这个单一的命令行很简单,工作正常.
kill -9 $(lsof -ti tcp:3000)
实现这一目标的可能方法:
最佳
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
lsof -i tcp:port_number
-将列出在该端口上运行的进程
kill -9 PID
-将杀死进程
在你的情况下,它将是
lsof -i tcp:3000
从您的终端中找到过程的PID
kill -9 PID
这两个命令将帮助您查找和终止服务器进程
lsof -wni tcp:3000
杀死-9 pid
添加到~/.bash_profile
:
function killTcpListen () {
kill -QUIT $(sudo lsof -sTCP:LISTEN -i tcp:$1 -t)
}
然后source ~/.bash_profile
跑
killTcpListen 8080
使用sindresorhus的fkill工具,你可以这样做:
$ fkill :3000