Linux和Windows端口常用操作
一:简介
开发过程中常常会遇到端口被占用的问题、偶尔也会遇到明明服务器上tomcat正常运行、启动正常、运行正常、但是在外部就是访问不了!有时候我们清楚的知道是什么程序占用了端口、但是有的时候就不得不通过命令的方式来查看指定的端口到底被哪个程序占用了、还有较少的一种情况是这个端口到底有没有对外开放、尤其是在Linux当中。
二:Windows指定端口操作
1: 主要命令
主要命令(只做功能介绍、详细使用请 xxx /? 查看):
a) netstate——主要用于查看端口情况。Windows、Linux通用、参数有所不同。
b) tasklist——列举出正在运行的进程。
c) taskkill——强行终止指定进行。
举个场景:当我们启动tomcat时、老是提示8080端口被占用!假设自己不知道是什么程序占用的这个端口、(如果知道、这也是多一种调试方式)如何查出是什么程序占用的8080端口、并且如何去结束这个进程进而释放掉8080端口。
2: 具体过程
a) 打开命令行窗口:ctrl+r——cmd 之后出现黑黑一片:
b) 查询8080端口好被占用的进程PID(出现多个*.148:8080的原因是本机使用的代理为148:8080地址):
c) 查看PID为7904的进程是什么:
d) 知道进程名称之后我们就可以结束此进程来释放8080端口:有两种方式、一种是使用任务管理器来找到javaw.exe来强行结束进程、很简单。另一种是通过命令行的方式来结束:
注意:/im 参数后面紧跟的一定是被终止的进程名称。
三:Linux指定端口操作
1: 主要命令
a) netstate——查看指定端口信息
b) ps——查看系统进程信息
c) kill——结束指定进程信息
2: 具体过程
同样的场景:
a) 终端输入:netstat –anp | grep 8888:
b) 使用ps查看PID为15315的进程的信息(可选)重点关注第一行:
c) 使用kill结束端口为:8888的进程:
从上图显示、端口8888已经被释放掉。
四:测试服务器指定端口是否开放
如前面所说、tomcat启动成功、没有任何异常信息、以前还好好的、只是机器重新启动了一下、就访问不了了。
可能原因、防火墙开启、使得服务器并没有对外开发8880端口。此时可以使用telnet来测试端口是否开放、注意telnet远程连接因为是未经过加密的、所以非常不安全、主要的作用被用来测试端口是否开放。
1: 测试端口是否开放
a) 打开命令终端、输入 telnet 10.45.35.65 8888 :
如果显示如上、则是连接失败(可以使用ping命令来测试连接是否成功、然后使用telnet测试端口)、或者端口未开放。
注意:telnet的使用是 IP 空格 端口! 10.45.35.65 8888 而不是10.45.35.65:8888
如果显示一片黑暗、则表示连接正常、端口正常对外开放:
此时可以使用quite来退出:
五:Linux通过防火墙开放指定端口
有时候禁用防火墙不一定起作用、而我们要的只是某些特定端口可以对外开放、只需在防火墙的配置文件中:/etc/sysconfig/iptables 增加如下内容来开放端口(记得修改之后重新启动防火墙:service iptables restart):
更多关于防火墙的操作:
[root@localhost ~]# service iptables status<回车> 停止防火墙: [root@localhost ~]# service iptables stop <回车> 启动防火墙: [root@localhost ~]# service iptables start <回车> 重启防火墙: [root@localhost ~]# service iptables restart <回车> 永久关闭防火墙: [root@localhost ~]# chkconfig iptables off<回车> 永久关闭后启用: [root@localhost ~]# chkconfig iptables on<回车>