我从java类中打开了端口#5955,以便从客户端进行通信。我怎么关闭这个端口后,我做了?还有哪个命令可以显示我如果端口打开或关闭?
当前回答
无论您如何打开端口,您都可以以相同的方式关闭它。例如,如果您创建了一个套接字,将其绑定到端口0.0.0.0:5955,并调用listen,关闭该套接字。
您也可以直接终止打开端口的进程。
如果你想知道哪个进程打开了一个端口,试试这个:
lsof -i :5955
如果你想知道端口是否打开,你可以执行同样的lsof命令(如果任何进程打开了端口,它就是打开的;否则,它不是),或者你可以尝试连接到它,例如:
nc localhost 5955
如果它立即返回而没有输出,则端口没有打开。
值得一提的是,从技术上讲,它不是一个开放的端口,而是一个主机:端口组合。例如,如果您以10.0.1.2的身份插入LAN,则可以将套接字绑定到127.0.0.1:5955或10.0.1.2:5955,其中任何一个都不会影响另一个,或者可以绑定到0.0.0.0:5955以同时处理两个套接字。您可以使用ifconfig命令查看您计算机的所有IPv4和IPv6地址。
其他回答
简单的一行程序
现在有一种比其他命令(没有Sudo、包或多行)更直接的命令。 要终止端口8080,只需调用:
LSOF -TI TCP:8080 |Xargs Kill
要找到流程,请尝试:
sudo lsof -i :portNumber
使用PID杀死当前正在使用该端口的进程
kill PID
然后检查端口是否关闭。如果没有,试试:
kill -9 PID
如果前面的方法不管用,我只会做下面的
sudo kill -9 PID
安全起见。同样,这取决于您如何打开端口,这可能无关紧要。
首先找出占用了所需端口的进程id (pid)。g 5434) Ps aux | grep 5434
2.终止这个过程
kill -9 <pid>
EDIT
在2022年9月,这帮助了我的MacOS Monterey M1 Pro芯片:
sudo lsof -t -i tcp:yourPortNumber | sudo xargs kill
在2018年,我使用MacOS HighSierra的方法是这样的:
sudo lsof -nPi:你的端口号
然后:
sudo kill -9你的id
我为此创建了一个函数。
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
在终端中复制并粘贴此代码块可以释放所需的端口。记得修改最后一行的端口号。
推荐文章
- 警告用户/local/mysql/data目录不属于mysql用户
- 在Mac OS X上使用鼠标聚焦(加上自动提升)
- ssh -L转发多个端口
- 我在哪里可以找到Mac OS X Lion的“make”程序?
- 当我没有Mac的时候,在Mac/Safari上测试web应用程序
- 在Mac上安装MySQL后,使用ALTER USER语句重置MySQL root密码
- my.cnf文件在macOS上的位置
- 如何从Mac OS X上卸载MySQL ?
- 查找当前可执行文件的路径,不包含/proc/self/exe
- 将主机端口转发到docker容器
- 在Mac上安装R -警告消息:设置LC_CTYPE失败,使用“C”
- 为什么cURL返回错误“(23)Failed writing body”?
- 节点和错误:EMFILE,打开的文件太多
- 如何使用命令行工具为Mac OS X创建一个漂亮的DMG ?
- 由于环境错误无法安装包:[Errno 13]