2014-05-24 45 views
1

我想在Java,Ubuntu中獲取給定PORT ID的進程名稱。我發現樣本如何在Windows中執行(Runtime中的tasklist)。但我需要在Linux中知道這一點。在Ubuntu-Linux上獲取給定Java端口的進程名稱?

+1

你的意思是進程id? – assylias

+0

不是進程ID。我想知道給定端口的進程名稱。 –

+0

@Débora我認爲你剛剛改變了以前「如何獲得給定PID的進程名稱」的整個問題的本質。 –

回答

4

如果要列出監聽到一定端口的應用程序,你可以結合使用unix命令lsofawk

lsof -i :80 | awk '{print $1}' 

這將列出你,即從該處理命令名,其監聽端口80

在你javacode你必須寫以下內容:

int port = 80; 
Process p = Runtime.getRuntime().exec("lsof -i :" + port + " | awk '{print $1}'"); 

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
while ((s = reader.readLine()) != null) { 
    System.out.println(s); 
} 

請注意,如果你想獲得基於一個進程ID(PID),進程名稱,你可以使用它代替:

Process p = Runtime.getRuntime().exec("ps -ef | awk '{if($2==\"" + pid + "\") print $8}'"); 
+0

你最初的答案很有趣,它仍然不清楚操作者想要什麼,所以我已經添加了PID的代碼作爲旁註 - 希望你不介意。 – assylias

+0

@chresse。我非常感謝你的支持。這正是我所追求的。再一次,我非常感謝你。 –

+0

@assylias:當然我沒問題 - 你非常歡迎。只要它有助於其他人:) – chresse

2

/proc文件系統有幫助。 /proc/$PID/exe是與進程ID對應的可執行文件的符號鏈接。顯然,你可以簡單地從Java讀取該文件。

編輯:之前,你問過「進程ID」,現在它是關於一個TCP/IP端口...,使我的答案無用。

+0

謝謝。但是請介意讓我知道示例代碼,請使用Java? –

相關問題