How do I close an open port from the terminal on t

2019-01-29 15:05发布

I opened port #5955 from a java class to comunicate from a client. How do i close this port after I am done? and also which command can show me if port open or closed?

标签: macos port
11条回答
甜甜的少女心
2楼-- · 2019-01-29 15:14

In 2018 here is what worked for me using MacOS HighSierra:

sudo lsof -nPi :yourPortNumber

then:

sudo kill -9 yourPIDnumber

查看更多
我命由我不由天
3楼-- · 2019-01-29 15:19

However you opened the port, you close it in the same way. For example, if you created a socket, bound it to port 0.0.0.0:5955, and called listen, close that same socket.

You can also just kill the process that has the port open.

If you want to find out what process has a port open, try this:

lsof -i :5955

If you want to know whether a port is open, you can do the same lsof command (if any process has it open, it's open; otherwise, it's not), or you can just try to connect to it, e.g.:

nc localhost 5955

If it returns immediately with no output, the port isn't open.

It may be worth mentioning that, technically speaking, it's not a port that's open, but a host:port combination. For example, if you're plugged into a LAN as 10.0.1.2, you could bind a socket to 127.0.0.1:5955, or 10.0.1.2:5955, without either one affecting the other, or you could bind to 0.0.0.0:5955 to handle both at once. You can see all of your computer's IPv4 and IPv6 addresses with the ifconfig command.

查看更多
地球回转人心会变
4楼-- · 2019-01-29 15:26

very simple find port 5900:

sudo lsof -i :5900

then considering 59553 as PID

sudo kill 59553
查看更多
别忘想泡老子
5楼-- · 2019-01-29 15:29

I have created a function for this purpose.

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

Copy & pasting this block of code in your terminal should free your desired port. Just remember to change the port number in last line.

查看更多
该账号已被封号
6楼-- · 2019-01-29 15:31

I use lsof combined with kill, as mentioned above; but wrote a quick little bash script to automate this process.

With this script, you can simply type killport 3000 from anywhere, and it will kill all processes running on port 3000.

https://github.com/xtrasimplicity/killport

查看更多
登录 后发表回答