Linux下Tomcat 80端口被占用的解决办法

分析:netstat -an查看到大量的80端口进程僵死,重启tomcat.tomcat启动失败,网页依然无法打开.

停止tomcat进程shutdown.sh,停止tomcat后telnet 127.0.0.1 80,发现80端口依然可用。netstat -an|grep 80 查看发现有许多80端口进程在里面,使用kill pid命令终止进程,无用。使用lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'命令后所有80端口进程删除。重新启动tomcat,系统正常运行。不过为什么tomcat在关闭时却不能将80端口的进程一并关闭的原因需要分析一下。

[root@gzcourt bin]# netstat -an |grep 80


tcp 0 0 ::ffff:127.0.0.1:8005 :::* LIST


EN


tcp 0 0 :::8009 :::* LIST


EN


tcp 0 0 :::80 :::* LIST


EN


tcp 0 0 :::8080 :::* LIST


EN


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:202.160.179.12:36057 TIME


_WAIT


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:202.160.178.15:39176 TIME


_WAIT


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:218.20.57.173:55001 ESTA


BLISHED


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:218.20.57.173:3516 ESTA


BLISHED


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:218.20.57.173:55037 ESTA


BLISHED


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:218.20.57.173:3518 ESTA


BLISHED


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:61.135.162.208:57893 TIME


_WAIT


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:210.72.4.122:39196 ESTA


BLISHED


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:59.32.124.136:22529 ESTA


BLISHED


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:218.20.57.173:55222 ESTA


BLISHED


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:218.20.57.173:3510 ESTA


BLISHED


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:59.32.124.136:22530 ESTA


BLISHED


tcp 0 0 ::ffff:172.16.1.153:80 ::ffff:210.72.4.122:39198 ESTA


BLISHED


unix 3 [ ] STREAM CONNECTED 6880 /tmp/.X11-unix/X0


# lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh

以上脚本可以清除80端口的进程

解决方案:linux 下将tomcat的server.xml的端口改为80后以tomcat身份无法启动tomcat。

在redhat上启动tomcat(将server.xml中的端口改为80)

su – tomcat -c "$CATALINA_HOME/bin/startup.sh"

后出现:Catalina.start: LifecycleException: null.open: java.net.BindException: Permission denied:80

这是因为只有root用户才可访问1024以下的端口。

解决方法:重将server.xml中的端口改为8080

然后:iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8080

(如果用到443,也相应执行以上方法)

即可。

相关推荐