在具體的Linux系統維護中,特別對於某些我們初次接觸的新應用程序,我們往往需要根據進程名查對應的端口號(當然,前提是進程要處於啟動狀態),或者反過來,根據端口號查對應的進程名。那么,我們該采用什么方法呢?
1、根據進程名查對應的端口號
如果你在網上搜索一下,發現有不少這方面的資料,仔細嘗試,卻發現多半是不正確的(吐槽一下:文抄公真是多如牛毛,以訛傳訛太可惡)。其實這個很容易做到:
#netstat -tlnp | grep processname
2、根據端口號查對應的進程名
網上推薦使用兩種方法,分別用到lsof和netstat命令,在這里根據我的使用經驗總結一下:
1)使用lsof命令
#lsof -Pnl -i :portnumber
lsof(list open files)是一個列出當前系統中打開文件的工具。在linux環境下,everything is file,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。
上述lsof命令參數解釋:
-P :該選項禁止端口號到端口名的轉換,這樣可以加快lsof運行速度。
-n :該選項禁止端口號到主機名稱的轉換,這樣不僅可以加快lsof的運行速度,而且在主機名稱查找不能奏效時非常有用。
-l :該選項禁止用戶ID號到登錄名的轉換,這在登錄名查找不正確或很慢時非常有用。
-i [info]:該選項指定顯示與info中互聯網地址相匹配的信息。
2)使用netstat命令
#netstat-tlnp | grep :portnumber
注意:portnumber前面最好加上:,這樣便於縮小查詢范圍。這種方法與第一種方法實際查找的結果不是同一內容,但都可以查到進程名,差別在於,這種方法看到的是最簡單的端口監聽信息,而第一種方法看到的是跟該端口關聯的具體網絡連接,大家各取所需吧。
原文:https://blog.51cto.com/riser/1341575
