获取windows / linux中进程的启动时间?

时间:2016-04-14 11:42:08

标签: java process runtime jna

我有这个过程的ID(pid) 现在我想知道具有此id的进程何时开始。

注1:该进程不是java线程。 注2:欢迎JNA解决方案

从我的java上下文中我想获得这些信息 怎么办呢?

更新:见注2。

1 个答案:

答案 0 :(得分: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;
    }
}

<强>输出

2016年4月13日星期三21:13:10

通过命令行验证

xxx@xxx:~$ ps -ewo pid,lstart | grep 29489
29489 Wed Apr 13 21:13:10 2016