Get Port Status on Windows and Linux
偶尔会碰到myeclipse突然崩溃的情况,但tomcat服务还为关闭,再次启动myeclipse和tomcat时,会提示Address Already Bind。稍总结了下Windows和Linux下查看系统端口使用的一般方法。
进程与端口
- 进程与端口一一对应;除了使用IP标识一台PC外,还需要使用端口标志与哪一个进程进行通信;
- 端口仅针对TCP、UDP应用。
Window查找指定端口
主要步骤
1)查看被占用的端口号
netstat -aon | findstr port_number
netstat -aon | findstr 5000
TCP 127.0.0.1:5000 0.0.0.0:0 LISTENING 3988
TCP 127.0.0.1:50000 0.0.0.0:0 LISTENING 316
最后一列是该端口对应的进程PID;
2)查看该端口对应的进程
tasklist | findstr pid
tasklist | findstr 3988
python.exe 3988 Console 0 2,968 K
3)关闭进程
打开任务管理器,菜单->查看->选择列,勾选”PID(进程标识符)”即可显示PID,找到后结束该进程即可。
命令学习
netstat
在命令行下输入: netstat -help,输出如下:
显示协议统计信息和当前 TCP/IP 网络连接。
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
-a 显示所有连接和监听端口。
-b 显示包含于创建每个连接或监听端口的
可执行组件。在某些情况下已知可执行组件
拥有多个独立组件,并且在这些情况下
包含于创建连接或监听端口的组件序列
被显示。这种情况下,可执行组件名
在底部的 [] 中,顶部是其调用的组件,
等等,直到 TCP/IP 部分。注意此选项
可能需要很长时间,如果没有足够权限
可能失败。
-e 显示以太网统计信息。此选项可以与 -s
选项组合使用。
-n 以数字形式显示地址和端口号。
-o 显示与每个连接相关的所属进程 ID。
-p proto 显示 proto 指定的协议的连接;proto 可以是
下列协议之一: TCP、UDP、TCPv6 或 UDPv6。
如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议之一:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-r 显示路由表。
-s 显示按协议统计信息。默认地,显示 IP、
IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
-p 选项用于指定默认情况的子集。
-v 与 -b 选项一起使用时将显示包含于
为所有可执行组件创建连接或监听端口的
组件。
interval 重新显示选定统计信息,每次显示之间
暂停时间间隔(以秒计)。按 CTRL+C 停止重新
显示统计信息。如果省略,netstat 显示当前
配置信息(只显示一次)
常用命令
-
netstat -a 显示所有连接和端口号
-
netstat -o 显示端口相关联的进程ID
-
netstat -n 以数字形式显示地址和端口号
-
netstat -r 显示路由表
Linux下查找指定端口
主要步骤
1)查看端口
netstat -anp | grep "port_number"
#netstat -anp | grep 8100
tcp 0 0 127.0.0.1:8100 0.0.0.0:* LISTEN 2388/soffice.bin
2)查看端口对应的服务
lsof -i:"port_number"
# lsof -i:8100
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
soffice.b 2388 oa 15u IPv4 12894 0t0 TCP dev.egolife.com:xprint-server (LISTEN)
端口服务对应列表可以通过/etc/services查找。
有些端口通过netstat查不出来,更可靠的办法是:
nmap -sT -O localhost
# nmap -sT -O localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2013-11-01 08:49 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000036s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
rDNS record for 127.0.0.1: dev.egolife.com
Not shown: 984 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
81/tcp open hosts2-ns
111/tcp open rpcbind
631/tcp open ipp
873/tcp open rsync
2048/tcp open dls-monitor
5222/tcp open unknown
5269/tcp open unknown
7070/tcp open realserver
7443/tcp open unknown
7777/tcp open unknown
8009/tcp open ajp13
8100/tcp open unknown
8300/tcp open unknown
9090/tcp open zeus-admin
No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=5.21%D=11/1%OT=22%CT=1%CU=40338%PV=N%DS=0%DC=L%G=Y%TM=5272FA92%P=
OS:x86_64-unknown-linux-gnu)SEQ(SP=105%GCD=1%ISR=10C%TI=Z%CI=Z%II=I%TS=A)OP
OS:S(O1=M400CST11NW7%O2=M400CST11NW7%O3=M400CNNT11NW7%O4=M400CST11NW7%O5=M4
OS:00CST11NW7%O6=M400CST11)WIN(W1=8000%W2=8000%W3=8000%W4=8000%W5=8000%W6=8
OS:000)ECN(R=Y%DF=Y%T=40%W=8018%O=M400CNNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%
OS:A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=Y%DF=Y%T=40%W=8000%S=O%A=S+%F=AS%O=M400CST
OS:11NW7%RD=0%Q=)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=
OS:40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0
OS:%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=1
OS:64%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Network Distance: 0 hops
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.87 seconds
3)关闭端口
iptables禁用端口
iptables -A INPUT -p tcp --dport "port_number" -j DROP
iptables -A OUTPUT -p tcp --dport "port_number" -j DROP
关闭端口对应的进程
kill -9 pid #9为信号量,表示立即强行删除一个进程
pkill "service_name" #pkill会关闭所有同名服务,慎用
命令学习
使用man/info等查询命令帮助即可
blog comments powered by Disqus
Published
29 March 2012