2013年8月21日 星期三

[小技巧]找出那個程式執行時佔用的port

有時在開發過程中,啟動了本機的Tomcat或Glassfish,會因為某些程式佔用的Port位和伺服器設定的Port衝到,造成啟動伺服器失敗,如何查詢哪個程式佔用了Port,這時可以開啟「命令提示字元」,打入:

> netstat -a -o -b

就可以看到那些程式使用的Port是多少,還有該程式的PID。

有個朋友告訴拜歐,有個好記的方式是:「netstat -nba」,請試看看。

其中在「netstat」後面的參數,可以在「命令提示字元視窗」中打「netstat -h」,就會列出下列說明:

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]

  -a            顯示所有連線和接聽連接埠。
  -b            顯示涉及建立每個連線或接聽連接埠的可執行檔。在某些情況下,
                已知可執行檔可主控多個獨立元件,在這些情況下,會顯示涉及
                建立連線或接聽連接埠的元件順序。在此案例中,可執行檔名稱
                位於底部的 [] 中,上方便是它呼叫的元件,直到已達 TCP/IP。
                請注意,此選項相當耗時,而且如果您沒有足夠的權限,便會失敗。
  -e            顯示乙太網路統計資料。此選項可搭配 -s 選項合併使用。
  -f            顯示外部地址的完整網域名稱 (FQDN)。
  -n            以數字格式顯示位址和連接埠號碼。
  -o            顯示與每個連線相關聯的擁有處理程序識別碼。
  -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 選項來指定預設的子集。
  -t            顯示目前的連線卸載狀態。
  -x            顯示 NetworkDirect 連線、接聽程式與共用端點。
  -y            顯示所有連線的 TCP 連線範本。不能合併使用其他選項。
  interval      重新顯示選取的統計資料,每次顯示之間會暫停您在 interval 選項
                指定的秒數。按 CTRL+C 鍵可以停止重新顯示統計資料。如果省略,
                netstat 將會列印一次目前的設定資訊。

沒有留言: