我想在使用端口号80的Linux平台上安装webserver-apache,但我不确定端口是否打开,是否被其他应用程序使用.
grep 80 /etc/services是:http 80/tcp www www-http #World Wide web Http
http 80/udp www www-http #Hypertext transfer protocol
2 . netstat -an | grep 80 | more :
它给出了一些IP,其中一个是IP:80 TIME_WAIT
你能帮忙告诉我怎样才能知道端口80是否打开和未使用,以便我可以开始安装.
这可以使用nc如下命令来实现:
# nc -z IP PORT
如果端口已被使用,它将返回 TRUE,或者是 FALSE(即,当前不侦听可用)。
我不推荐lsof或netstat方法,因为它首先尝试扫描所有正在运行的 PID 以获取所有有界端口:
# time lsof -i:8888
real 0m1.194s
user 0m0.137s
sys 0m1.056s```
# time nc -z 127.0.0.1 8888
real 0m0.014s
user 0m0.011s
sys 0m0.004s
Run Code Online (Sandbox Code Playgroud)
这里 8888 是一个未使用的端口。nc在上面的示例中,该命令的速度提高了约 85 倍。
$ nc -z 127.0.0.1 80 && echo "IN USE" || echo "FREE"
IN USE
$ nc -z 127.0.0.1 81 && echo "IN USE" || echo "FREE"
FREE
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用远程 IP,如果在指定时间内不接受连接,最好添加超时以自动退出。
$ nc -w 2 -z 216.58.196.174 81
它的谷歌IP没有使用,所以尝试2秒后会超时。
尝试将 lsof 通过管道输入 grep 并搜索端口号:
lsof|grep <port>
Run Code Online (Sandbox Code Playgroud)
如果没有显示任何内容,则表示该端口未被使用
您可以使用以下命令终止特定端口上的进程
kill -9 <pid>
Run Code Online (Sandbox Code Playgroud)
其中 pid 是从第一个命令获取的进程 ID。
netstat -tln | tail -n +3 | awk '{ print $4 }'
Run Code Online (Sandbox Code Playgroud)
这个显示 tcp 侦听端点的绑定地址。所有其他端点都是免费的;此外,如果在 Unix 上并且您不是 root,则无法绑定到“特权”端口号(端口号低于 1024)
更详细地解释:
netstat -tln - 所有监听 tcp 端口
tail -n +3 - netstat 头部的剪切
awk '{print $4 }' - 打印由 [ip]:[port] 组成的第四列
对于一般情况,您仍然需要注意删除所有不相关的接口;侦听地址 0.0.0.0 正在侦听所有网卡,如果有一个 IP 地址,那就是网卡/网络接口的特定 IP。
作为脚本的一部分,您可能希望使用以下内容:
resp=`netstat -tunl | grep ":80 "`
if [ -z "$resp" ]; then
echo "80 Port is free"
else
echo "80 Port is not free"
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34235 次 |
| 最近记录: |