Script to get free port Unix/Linux/OSX

less than 1 minute read

The following script is originally from my own project. It returns a free port starting from configurable port number.

#!/bin/bash
 
# Default nameserver port
(( port=35021 ))
 
# Silently (>> /dev/null) see if the port is free,
# otherwise increase counter to find a free port
if [ "$(uname)" == "Darwin" ]; then
# Special test for Mac OS X platform
 while lsof -n -i4TCP:$port | grep LISTEN >> /dev/null
 do
 (( port += 1 ))
 done
else
 while netstat -antu | grep $port >> /dev/null
 do
 (( port += 1 ))
 done
fi
 
echo $port

If you want to close an open port fiercely. Here you go

sudo netstat -ap | grep :<port_number> 

It returns a corresponding process holding the port_number. Then you kill it by

kill pid 
or kill -9 pid 

Tags: ,

Updated: