ajk*_*ajk 16
lsof 是你的朋友:
# lsof -i:8080 # free on my machine
# echo $?
1
# lsof -i:5353 # occupied
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mDNSRespo 64 _mdnsresponder 8u IPv4 0x9853f646e2fecbb7 0t0 UDP *:mdns
mDNSRespo 64 _mdnsresponder 9u IPv6 0x9853f646e2fec9cf 0t0 UDP *:mdns
# echo $?
0
Run Code Online (Sandbox Code Playgroud)
因此,在脚本中,您可以使用!否定值来测试可用性:
if ! lsof -i:8080
then
echo 8080 is free
else
echo 8080 is occupied
fi
Run Code Online (Sandbox Code Playgroud)
假设您正在使用net-tools中的netstat,这是一个有效的示例:
function is_port_free {
netstat -ntpl | grep [0-9]:${1:-8080} -q ;
if [ $? -eq 1 ]
then
echo yes
else
echo no
fi
}
Run Code Online (Sandbox Code Playgroud)
例如。
$ is_port_free 8080
yes
$ is_port_free 22
no
Run Code Online (Sandbox Code Playgroud)