2016-04-14 4 views
1

У меня есть ID (pid) этого процесса.
Теперь я хочу узнать, когда начался процесс с этим идентификатором.Получить начало процесса в windows/linux?

Note1: Процесс не является нитью java. Примечание2: JNA Solutions также приветствуется

Из моего контекста java я хочу получить эту информацию.
Как это можно сделать?

ОБНОВЛЕНИЕ: см. Примечание2.

+2

Дубликат - http://stackoverflow.com/questions/54686/how-to-get-a-list-of-current-op en-windows-process-with-java – deeveeABC

+0

Важным для меня является время начала, могу ли я получить его также из этого списка? – Gobliins

+0

Для Linux используйте «ps -eo pid, stime», чтобы получить время начала, указанное рядом с PID. Вы можете запустить эту команду из java так же, как в http://stackoverflow.com/questions/54686/how-to-get-a-list-of-current-open-windows-process-with-java – mdewit

ответ

1

В Linux (я бегу Ubuntu 14)

public class SO { 

    public static void main(String[] args) throws Exception { 
     System.out.println(getStartTime(29489)); 
    } 

    private static String getStartTime(int pid) throws IOException { 

     String start = null;   
     Runtime runtime = Runtime.getRuntime(); 
     Process process = runtime.exec("ps -ewo pid,lstart"); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); 
     String line = "";  
     while ((line = reader.readLine()) != null) { 
      line = line.trim(); 
      if (line.startsWith(pid+" ")) { 
       int firstSpace = line.indexOf(" "); 
       start = line.substring(firstSpace+1); 
       break; 
      } 
     }  
     return start; 
    } 
} 

Выход

Wed Apr 13 21:13:10 2016

Проверка через командную строку

[email protected]:~$ ps -ewo pid,lstart | grep 29489 
29489 Wed Apr 13 21:13:10 2016 
+0

do вы знаете, есть ли эквивалентная команда в окнах для «ps»? – Gobliins

+0

@Gobliins Я не знаю, как этого добиться в Windows. –

Смежные вопросы