我想知道怎樣查看端口被哪個程序占用
提問者:又壞又不帥7 | 瀏覽 次 | 提問時間:2016-12-23 | 回答數量:3
你好~!很高興為你解答,以下樓主可以嚐試:1)使用lsof命令lsof是一個非常強大的linux工具,她被用來查找哪些程序使用了那些文件。在linux係統下,基本上所有的東西都可以...
已有3條答案
槍在手跟你走_
回答數:121405 | 被采納數:208
2016-12-24 11:21:13
你好~!很高興為你解答,以下樓主可以嚐試:
1)使用lsof命令
lsof是一個非常強大的linux工具,她被用來查找哪些程序使用了那些文件。在linux係統下,基本上所有的東西都可以被當作文件來用。socket當然也是一種文件了。所以lsof可以用來查找誰用了某一個端口。具體方法:
lsof -i :port_number |grep "(LISTEN)"
-i是用來查找和網絡相關的文件,":"號是必須的,它是標誌你查找的是一個端口。port_number就是你要查找的端口號,譬如你要查找是否 有程序占用了oracle的監聽端口1521,就可以使用lsof -i :1521 |grep "(LISTEN)"。如果有程序已經占用了,那麼下麵打印的第二個字段就是該程序的進程id,第一個字段是進程的名字。
如果隻有losf -i :port_number可能會查到很多應用程序,但這些程序實際並沒有占用你指定的端口,這些端口隻是連接到本機器或者別的機器的該端口。所以要grep "(LISTEN)“,因為一個端口隻可能被一個程序占用的,所以這種方法是可靠的。
2)使用netstat 命令
大家一定對這個命令比較熟悉了,可能你從沒有想到用到來查找哪一個程序的占用了指定的端口。但是netstat -an 的確提供了這種功能。所以有問題了一定要想到先去查找man手冊,不過說實話,某些man手冊寫得讓中國人看不懂,那沒有辦法了,就googe或者 baidu一下吧。
執行man netstat命令,你會發現netstat 提供了'-p'的選項,這個選項的功能是告訴你哪個程序占用了該端口,但是她提供的形式比較古怪是以pid/process_name提供的。pid當然 是進程id了,process_name是進程的命令,中間以'/'號分隔。
和上麵的原因一樣,我們隻查找listen的端口,netstat 給我們提供了-l的選項,這個選項不是默認的選項。
下麵以1521端口來看怎麼查找到該程序,我們使用下麵的命令:
netstat -lnp|awk 'BEGIN{prt=":1521$"}{if ($4 ~ prt) print $0}'
在這裏使用awk來匹配第4個字段的模式是為了避免誤判。
1、查看windows所有端口進程
首先點擊開始菜單選擇運行,接著在運行對話框中輸入“cmd”,回車打開命令提示符窗口,然後在窗口中輸入【netstat -ano】,按下回車,之後就會顯示所有的端口占用情況。
2、如果你要查詢指定的端口占用的話,可以在窗口中繼續輸入【netstat -aon|findstr "提示的端口"】,這裏的提示的端口假設為80,那麼就輸入命令為【netstat -aon|findstr "80"】,回車之後就可以看見列表中的PID,然後根據PID在電腦的任務管理器中查看對應的占用程序,然後將其關閉即可。
3、然後根據查詢的PID找到對應的進程,繼續輸入命令【tasklist|findstr "5264"】,5264就是進程ID,現在知道是哪個進程占用的就可以采取相應措施進行解決了。
1.在開始--運行 裏麵輸入cmd點回車,會出現運行窗口。
2.在提示符後輸入netstat -ano回車,找到tcp 80端口對應的pid,比如1484.
3.ctrl+alt+del打開任務管理器,選進程,這裏有很多正在運行的程序怎麼找?別急點上麵的 查看--選擇列--在PID(進程標示符)前麵打鉤。好了,下麵的進程前麵都有了PID號碼。這時上一步找到的PID就有用了,找到1484,比如PEER.EXE什麼的,結束進程吧。這時再開服務器,看WEB可以啟動了!