shell – 如何确定端口是否正在使用,例如通过netstat?

我试图检查端口可用性并使用 shell脚本获取返回值.示例:如果端口8080空闲则返回true,否则返回false.有人可以帮忙吗?我尝试使用netstat.

解决方法

假设您使用的是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
}

> ${1:-8080}表示使用第一个参数作为端口,如果没有第一个参数则使用8080
> grep -q [0-9]:port表示匹配一个数字后跟冒号后跟端口
> $?是上一个命令的退出值.零意味着一切顺利.退出值大于0表示错误情况.在grep的上下文中,退出代码1表示不匹配. -q表示不执行任何操作,只返回退出值.
> netstat -ltnp表示正在侦听tcp端口的所有程序的列表数字端口和IP.
> a | b表示带b的过程标准输出

例如.

$is_port_free 8080
yes

$is_port_free 22
no

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...