我想在使用端口号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是否已打开且未使用,以便我可以开始安装。
答案 0 :(得分:6)
sudo netstat -anp | grep ':80 '
那应该给你pid&保存端口80的进程的名称
答案 1 :(得分:3)
尝试将lsof连接到grep并搜索端口号:
lsof|grep <port>
如果没有显示任何表示端口未使用
您可以使用
终止特定端口上的进程kill -9 <pid>
其中pid是从第一个命令获得的进程ID。
答案 2 :(得分:3)
netstat -tln | tail -n +3 | awk '{ print $4 }'
这个显示tcp侦听端点的绑定地址。所有其他端点都是免费的; 此外,如果在Unix上并且您不是root用户,则无法绑定到“特权”端口号(端口号低于1024)
更详细地解释:
netstat -tln - 所有侦听tcp端口
tail -n +3 - netstat标题的剪切
awk'{print $ 4}' - 打印由[ip]组成的第四列:[port]
对于一般情况,你仍然需要关心切断所有不相关的接口; 如果IP地址不是网络汽车/网络接口的特定IP,则监听地址0.0.0.0正在侦听所有网卡。
答案 3 :(得分:3)
作为脚本的一部分,您可能希望使用以下内容:
resp=`netstat -tunl | grep ":80 "`
if [ -z "$resp" ]; then
echo "80 Port is free"
else
echo "80 Port is not free"
fi
答案 4 :(得分:2)
这可以使用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
此处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
如果您尝试使用远程IP,则最好在指定时间内未接受连接的情况下将超时添加到自动退出中。
$ nc -w 2 -z 216.58.196.174 81
它的Google IP未使用,因此尝试2秒后将超时。
答案 5 :(得分:1)
这是您需要杀死的命令
netstat -tulpno | grep ':80'
答案 6 :(得分:0)
以下带有输出的命令 表示端口已打开,而没有输出的表示未打开 >
sudo fuser -i 80/tcp
您可以使用以下命令终止监听过程:
sudo fuser -k 80/tcp