Fut*_*020 350
找出占用您想要释放的端口号(例如,5955)的进程ID(PID)
sudo lsof -i :5955
Run Code Online (Sandbox Code Playgroud)使用其PID终止当前正在使用该端口的进程
sudo kill -9 PID
Run Code Online (Sandbox Code Playgroud)小智 33
要找到该过程,请尝试:
sudo lsof -i :portNumber
Run Code Online (Sandbox Code Playgroud)
使用其PID终止当前正在使用该端口的进程
kill PID
Run Code Online (Sandbox Code Playgroud)
然后检查端口是否关闭.如果没有,请尝试:
kill -9 PID
Run Code Online (Sandbox Code Playgroud)
如果之前没有工作,我只会做以下事情
sudo kill -9 PID
Run Code Online (Sandbox Code Playgroud)
为了安全起见.再次取决于您打开端口的方式,这可能无关紧要.
Ami*_*esh 24
一个班轮是最好的
kill -9 $(lsof -i:PORT -t) 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
示例:在 mac 上,想要清除端口 9604。以下命令就像一个魅力
kill -9 $(lsof -i:9604 -t) 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
aba*_*ert 23
但是,您打开端口,以相同的方式关闭它.例如,如果您创建了一个套接字,将其绑定到端口0.0.0.0:5955,并调用listen,则关闭该套接字.
您也可以杀死打开端口的进程.
如果要查找端口打开的进程,请尝试以下操作:
lsof -i :5955
Run Code Online (Sandbox Code Playgroud)
如果你想知道一个端口是否打开,你可以执行相同的lsof命令(如果任何进程打开它,它是打开的;否则,它不是),或者你可以尝试连接它,例如:
nc localhost 5955
Run Code Online (Sandbox Code Playgroud)
如果它立即返回而没有输出,则端口未打开.
值得一提的是,从技术上讲,它不是一个开放的端口,而是一个主机:端口组合.例如,如果您以10.0.1.2的形式插入LAN,则可以将套接字绑定到127.0.0.1:5955或10.0.1.2:5955,而不会影响另一个,或者可以绑定到0.0.0.0 :5955一次处理两个.您可以使用该ifconfig命令查看计算机的所有IPv4和IPv6地址.
fli*_*lik 17
非常简单的找到端口5900:
sudo lsof -i :5900
Run Code Online (Sandbox Code Playgroud)
然后考虑将59553作为PID
sudo kill 59553
Run Code Online (Sandbox Code Playgroud)
Gel*_*Gel 11
在2018年,这是使用MacOS HighSierra对我有用的东西:
须藤lsof -nPi:yourPortNumber
然后:
sudo kill -9 yourPIDnumber
小智 8
使用命令查找进程ID
lsof -n -i4TCP:8080
Run Code Online (Sandbox Code Playgroud)
获取processId后
sudo kill -9 processID
Run Code Online (Sandbox Code Playgroud)
然后提供您的系统密码。
您还可以使用此第一个命令来终止拥有特定端口的进程:
sudo netstat -ap | grep :<port_number>
Run Code Online (Sandbox Code Playgroud)
例如,假设此进程保存端口8000 TCP,然后运行命令:
sudo netstat -ap | grep :8000
Run Code Online (Sandbox Code Playgroud)
将输出与进程保持端口8000对应的行,例如:
tcp 0 0 *:8000 *:* LISTEN 4683/procHoldingPort
Run Code Online (Sandbox Code Playgroud)
在这种情况下,procHoldingPort是打开端口的进程的名称,4683是其pid,而8000(注意它是TCP)是它保存的端口号(您希望关闭它).
然后按照上面的例子终止进程:
kill 4683
Run Code Online (Sandbox Code Playgroud)
正如其他人在此提到的,如果这不起作用(你可以尝试使用kill -9作为参数):
kill -9 4683
Run Code Online (Sandbox Code Playgroud)
同样,一般来说,如果可以的话,最好避免发送SIGKILL(-9).
干杯,
盖伊.
小智 6
我为此目的创建了一个函数。
function free_port() {
if [ -z $1 ]
then
echo no Port given
else
PORT=$1;
PID=$(sudo lsof -i :$PORT) # store the PID, that is using this port
if [ -z $PID ]
then
echo port: $PORT is already free.
else
sudo kill -9 $PID # kill the process, which frees the port
echo port: $PORT is now free.
fi
fi
}
free_port 80 # you need to change this port number
Run Code Online (Sandbox Code Playgroud)
将此代码块复制并粘贴到您的终端中应该可以释放您所需的端口。只需记住更改最后一行中的端口号即可。
如上所述,我lsof结合使用kill; 但写了一个快速的小bash脚本来自动化这个过程.
使用此脚本,您只需killport 3000从任何位置键入,它将终止在端口上运行的所有进程3000.
https://github.com/xtrasimplicity/killport
小智 5
这似乎对我有用。只需将 your_port_number 更改为您要停止的端口号即可。
sudo lsof -t -i tcp:your_port_number | xargs kill -9
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
224886 次 |
| 最近记录: |