我从java类中打开了端口#5955,以便从客户端进行通信。我怎么关闭这个端口后,我做了?还有哪个命令可以显示我如果端口打开或关闭?


当前回答

我为此创建了一个函数。

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

在终端中复制并粘贴此代码块可以释放所需的端口。记得修改最后一行的端口号。

其他回答

使用命令查找进程ID

lsof -n -i4TCP:8080 

在获得processId之后

sudo kill -9 processID

然后提供您的系统密码。

这似乎对我有用。只需将your_port_number更改为您想要停止的端口号。

sudo lsof -t -i tcp:your_port_number | xargs kill -9

如上所述,我使用lsof和kill结合使用;但是编写了一个快速的bash脚本来自动化这个过程。

使用这个脚本,您可以在任何地方输入killport 3000,它将杀死端口3000上运行的所有进程。

https://github.com/xtrasimplicity/killport

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

简单的一行程序

现在有一种比其他命令(没有Sudo、包或多行)更直接的命令。 要终止端口8080,只需调用:

LSOF -TI TCP:8080 |Xargs Kill