可能有一些朋友想要做一些監視流量工具卻不知道如何根據埠獲取到程序的pid,如果你搜了一圈也沒有找到滿意的答案,希望我的這個文章可以幫到你。
1、獲取當前活動的tcp/udp埠值。
你會有許多方法獲取此值,這裡不多廢話了。(我用的方法是通過raw socket進行抓包分析,你也可以用libpcap庫實現)。
假設當前我發現乙個本地埠為54351的tcp埠。
當前狀態:tcp_port/udp_port
2、獲取埠的inode值。
假設你用自己的方法獲取到了當前活動的tcp埠,此時你需要找到此埠對應的inode節點值。怎麼獲得呢?在這裡/proc/net/tcp(對於udp是/proc/net/udp)。這個檔案中儲存的主要資訊是:本地位址,本地埠,遠端位址,遠端埠,鏈結狀態,傳送佇列,接收佇列,uid,inode等資訊。記住這個值,它就是我們需要的東西。
假設埠號為 54351 的記錄中inode欄位為 193738
當前狀態:tcp_port/udp_port -> inode
3、遍歷所有程序的所有fd(fd =
檔案描述符)
在到/proc/目錄你會看到很多以數字命名的資料夾,這些資料夾裡就是系統當前執行程序的相關資訊。檔案名字這些數字就是程序的pid,比如叫做「1」的資料夾裡就是init程序的相關資訊。
假設我的google-chrome程序pid為102。我進入102目錄(即當前我處在/proc/102/目錄)後,能看到乙個叫做fd的目錄。進入fd目錄。能看到很多用數字命名的檔案,執行「ls -l」可以看到
niu@niu:/proc/102/fd$ ls -l
total 0
l-wx------ 1 niu niu 64 2011-11-29 10:41 31 -> pipe:[11903]
lr-x------ 1 niu niu 64 2011-11-29 10:41 32 -> /opt/google/chrome/chrome.pak
lrwx------ 1 niu niu 64 2011-11-29 10:41 33 -> anon_inode:[eventpoll]
lr-x------ 1 niu niu 64 2011-11-29 10:47 13 -> pipe:[8449]
l-wx------ 1 niu niu 64 2011-11-29 10:47 14 -> pipe:[8449]
lr-x------ 1 niu niu 64 2011-11-29 10:47 15 -> pipe:[8450]
l-wx------ 1 niu niu 64 2011-11-29 10:47 16 -> pipe:[8450]
lrwx------ 1 niu niu 64 2011-11-29 10:47 2 -> /dev/null
lrwx------ 1 niu niu 64 2011-11-29 10:47 3 -> anon_inode:[eventfd]
lr-x------ 1 niu niu 64 2011-11-29 10:47 4 -> pipe:[6952]
lrwx------ 1 niu niu 64 2011-11-29 10:47 7 -> /dev/null
lrwx------ 1 niu niu 64 2011-11-29 10:47 8 -> socket:[193738]
其中有一條為:
lrwx------ 1 niu niu 64 2011-11-29 10:47 8 -> socket:[193738]
方括號中的值就此程序占用的socket的inode值,
解析出此值與 前面獲得到的193738比較可得出結論:54351埠屬於程序102。
當前狀態:tcp_port/udp_port -> inode
== inode<-pid
linux centos 檢視程序對應的埠號
常見引數 a all 顯示所有選項,預設不顯示listen相關 t tcp 僅顯示tcp相關選項 u udp 僅顯示udp相關選項 n 拒絕顯示別名,能顯示數字的全部轉化成數字。l 僅列出有在 listen 監聽 的服務狀態 p 顯示建立相關鏈結的程式名 r 顯示路由資訊,路由表 e 顯示擴充套件資...
Windows中關閉埠對應的服務程序
關閉埠對應的服務程序 1 通過dos命令查詢該埠號對應的pid 輸入命令netstat nao 將列出所有的埠號及程序id c documents and settings administrator netstat nao active connections proto local addres...
Windows查詢監聽埠對應的程序及其路徑
假設掃瞄到1234埠存在可疑程序,需要找到該監聽埠對應的程序及其程序檔案的全路徑,判斷是否為可疑程式。啟動命令列 按win r鍵,然後輸入 cmd 檢視埠號對應的程序id netstat ano findstr 1234 檢視程序id對應的程序,假設程序id為123 ps 如果有桌面環境的話,獲取到...