操作系统使用java登录和注销时间

时间:2013-04-24 09:29:24

标签: java

任何人都可以帮助我  知道 如何使用java api检测系统登录和注销时间? 登录时的登录时间和系统关闭时的登出时间。 如果可能的话,也可以用于linux机器。

2 个答案:

答案 0 :(得分:1)

看看这个:

public static long getSystemUptime() throws Exception {
long uptime = -1;
String os = System.getProperty("os.name").toLowerCase();
if (os.contains("win")) {
    Process uptimeProc = Runtime.getRuntime().exec("net stats srv");
    BufferedReader in = new BufferedReader(new InputStreamReader(uptimeProc.getInputStream()));
    String line;
    while ((line = in.readLine()) != null) {
        if (line.startsWith("Statistics since")) {
            SimpleDateFormat format = new SimpleDateFormat("'Statistics since' MM/dd/yyyy hh:mm:ss a");
            Date boottime = format.parse(line);
            uptime = System.currentTimeMillis() - boottime.getTime();
            break;
        }
    }
} else if (os.contains("mac") || os.contains("nix") || os.contains("nux") || os.contains("aix")) {
    Process uptimeProc = Runtime.getRuntime().exec("uptime");
    BufferedReader in = new BufferedReader(new InputStreamReader(uptimeProc.getInputStream()));
    String line = in.readLine();
    if (line != null) {
        Pattern parse = Pattern.compile("((\\d+) days,)? (\\d+):(\\d+)");
        Matcher matcher = parse.matcher(line);
        if (matcher.find()) {
            String _days = matcher.group(2);
            String _hours = matcher.group(3);
            String _minutes = matcher.group(4);
            int days = _days != null ? Integer.parseInt(_days) : 0;
            int hours = _hours != null ? Integer.parseInt(_hours) : 0;
            int minutes = _minutes != null ? Integer.parseInt(_minutes) : 0;
            uptime = (minutes * 60000) + (hours * 60000 * 60) + (days * 6000 * 60 * 24);
        }
    }
}
return uptime;
}

这会给你正常运行时间,所以从当前时间减去它。

答案 1 :(得分:0)

如果系统是指操作系统,那么我会为你提供一个脚本, 特别是对于Linux。例如,您可以使用文件〜/ .bashrc来检测登录。