鍍金池/ 問答/Java  Linux/ java程序獲取linux服務(wù)器進(jìn)程信息

java程序獲取linux服務(wù)器進(jìn)程信息

搜索了很多關(guān)于獲取Linux的信息,但是沒有發(fā)現(xiàn)獲取linux服務(wù)器的進(jìn)程信息詳細(xì)說明。

在這里求解一下,能否在java代碼中實(shí)現(xiàn)讀取代碼執(zhí)行的本機(jī)linux服務(wù)器中的進(jìn)程信息?
該問題又分為三個(gè)小問題:
1:能否指定只獲取某個(gè)用戶下的進(jìn)程信息?
2:能否獲取指定進(jìn)程的信息?
3:能否獲取到類似ps -ef和ps aux兩個(gè)命令下的多維度信息?

我現(xiàn)在有的思路是使用Runtime.getRuntime().exec()調(diào)用shell來獲取信息,但是我希望在不使用shell的情況下得到這些信息,就類似于直接通過調(diào)用java.net.InetAddress可以獲取到IP信息一樣,能否存在這樣封裝的包實(shí)現(xiàn)?
懇求指教!謝謝!

回答
編輯回答
維他命

既然exec,又想要ps -ef, 為何不exec("ps -ef")

public static void main(String[] args) throws Exception {

     try {
       String line;
       Process p = Runtime.getRuntime().exec( "ps -ef" );

       BufferedReader in = new BufferedReader(
               new InputStreamReader(p.getInputStream()) );
       while ((line = in.readLine()) != null) {
         System.out.println(line);
       }
       in.close();
     }
     catch (Exception e) {
       // ...
     }
}
2017年9月13日 03:46