1. 程式人生 > >Get Port Status on Windows and Linux

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