Linux如何查看端口是否被占用

作者: mlrwcc  2017-08-23 11:40 [查查吧]:uabf.cn

  Linux如何查看端口是否被占用?下面為大家推薦兩種檢測(cè)方法,對(duì)Linux系統(tǒng)不熟悉的小伙伴可以看看。

  1、使用lsof命令

  lsof是一個(gè)非常強(qiáng)大的linux工具,她被用來查找哪些程序使用了那些文件。在linux系統(tǒng)下,基本上所有的東西都可以被當(dāng)作文件來用。socket當(dāng)然也是一種文件了。所以lsof可以用來查找誰用了某一個(gè)端口。

  具體方法:lsof -i :port_number |grep "(LISTEN)"

  -i是用來查找和網(wǎng)絡(luò)相關(guān)的文件,":"號(hào)是必須的,它是標(biāo)志你查找的是一個(gè)端口。port_number就是你要查找的端口號(hào),譬如你要查找是否 有程序占用了oracle的監(jiān)聽端口1521,就可以使用lsof -i :1521 |grep "(LISTEN)"。如果有程序已經(jīng)占用了,那么下面打印的第二個(gè)字段就是該程序的進(jìn)程id,第一個(gè)字段是進(jìn)程的名字。

Linux如何查看端口是否被占用

  如果只有l(wèi)osf -i :port_number可能會(huì)查到很多應(yīng)用程序,但這些程序?qū)嶋H并沒有占用你指定的端口,這些端口只是連接到本機(jī)器或者別的機(jī)器的該端口。所以要grep "(LISTEN)“,因?yàn)橐粋€(gè)端口只可能被一個(gè)程序占用的,所以這種方法是可靠的。

  2、使用netstat 命令

  大家一定對(duì)這個(gè)命令比較熟悉了,可能你從沒有想到用到來查找哪一個(gè)程序的占用了指定的端口。但是netstat -an 的確提供了這種功能。所以有問題了一定要想到先去查找man手冊(cè),不過說實(shí)話,某些man手冊(cè)寫得讓中國(guó)人看不懂,那沒有辦法了,就googe或者 baidu一下吧。

  執(zhí)行man netstat命令,你會(huì)發(fā)現(xiàn)netstat 提供了'-p'的選項(xiàng),這個(gè)選項(xiàng)的功能是告訴你哪個(gè)程序占用了該端口,但是她提供的形式比較古怪是以pid/process_name提供的。pid當(dāng)然 是進(jìn)程id了,process_name是進(jìn)程的命令,中間以'/'號(hào)分隔。

  和上面的原因一樣,我們只查找listen的端口,netstat 給我們提供了-l的選項(xiàng),這個(gè)選項(xiàng)不是默認(rèn)的選項(xiàng)。

  下面以1521端口來看怎么查找到該程序,我們使用下面的命令:netstat -lnp|awk 'BEGIN{prt=":1521$"}{if ($4 ~ prt) print $0}'在這里使用awk來匹配第4個(gè)字段的模式是為了避免誤判。

  以上就是Linux如何查看端口是否被占用相關(guān)內(nèi)容,希望對(duì)你有幫助。

?
    發(fā)表評(píng)論

    醫(yī)療健康