2013-04-24 2 views
0

Может ли кто-нибудь мне помочь знать как обнаружить регистрацию системы и выйти из системы с помощью java api? Только время входа в систему при входе и выходе из системы при выключениях системы. Если возможно, также можно использовать и для linux.Операционная система Вход и выход из системы с использованием java

+2

системой вы имеете в виду операционную систему или приложение. – shazin

ответ

0

Если по системе вы имеете в виду операционную систему, то я буду стараться использовать для этого сценарий, специально для Linux. Например, вы можете использовать файл ~/.bashrc для обнаружения журнала в

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; 
} 

это даст вам время бесперебойной работы, поэтому вычесть его из текущего времени.