Как определить, как долго (в миллисекундах) компьютер включен?Получить работоспособность системы в Java
ответ
Я не могу думать о зависимом от ОС способе сделать это. Опция должна была бы использовать ManagementFactory.getRuntimeMXBean().getUptime();
Что возвращает ваше время автономной работы JVM, поэтому не совсем то, что вы ищете, но уже шаг в правильном направлении.
Что именно вы пытаетесь выполнить с данными?
в какой тип данных возвращается? Я ищу систему, вошедшую вовремя для использования в моем приложении, чтобы предупредить пользователей о том, что система не была отключена в течение определенных часов. пожалуйста, обновите код, если есть. спасибо – JavDev
@JavDev возвращает количество миллисекунд безотказной работы как длинный –
В Windows вы можете выполнить команду net stats srv
, а в Unix вы можете выполнить команду uptime
. Каждый выход должен анализироваться для получения времени безотказной работы. Этот метод автоматически выполняет необходимую команду, обнаруживая операционную систему пользователя.
Обратите внимание, что ни одна операция не возвращает время безотказной работы в миллисекунду точности.
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;
}
Это не работает в течение первого часа безотказной работы. – KerrM
Протестировал его на mac – KerrM
@ KerrM Мой плохой, не замечая ваших комментариев раньше, как-то! На Mac, какой формат вывода на первый час? Я фактически написал часть OSX/Linux этого метода, полностью основанную на документации, поскольку у меня нет простого доступа к любому типу ОС. – Vulcan
Для окон вы можете получить uptime
к точности миллисекунды, запрашивая windows WMI
Чтобы запустить код, приведенный ниже, вам нужно будет загрузить Jawin библиотеку и добавить jawin.dll
к вашему затмений корня проекта
public static void main(String[] args) throws COMException {
String computerName = "";
String userName = "";
String password = "";
String namespace = "root/cimv2";
String queryProcessor = "SELECT * FROM Win32_OperatingSystem";
DispatchPtr dispatcher = null;
try {
ISWbemLocator locator = new ISWbemLocator(
"WbemScripting.SWbemLocator");
ISWbemServices wbemServices = locator.ConnectServer(computerName,
namespace, userName, password, "", "", 0, dispatcher);
ISWbemObjectSet wbemObjectSet = wbemServices.ExecQuery(
queryProcessor, "WQL", 0, null);
DispatchPtr[] results = new DispatchPtr[wbemObjectSet.getCount()];
IUnknown unknown = wbemObjectSet.get_NewEnum();
IEnumVariant enumVariant = (IEnumVariant) unknown
.queryInterface(IEnumVariant.class);
enumVariant.Next(wbemObjectSet.getCount(), results);
for (int i = 0; i < results.length; i++) {
ISWbemObject wbemObject = (ISWbemObject) results[i]
.queryInterface(ISWbemObject.class);
System.out.println("Uptime: "
+ wbemObject.get("LastBootUpTime"));
}
} catch (COMException e) {
e.printStackTrace();
}
- 1. Как обеспечить работоспособность в Java?
- 2. KairosDB Java-клиент проверяет работоспособность
- 3. Проверка на работоспособность AsyncTask
- 4. Получить MAC-адрес системы в Java
- 5. Получить время последней загрузки системы в Java
- 6. Как найти работоспособность в минутах?
- 7. Как проверить работоспособность шлюза приложения в Azure
- 8. Проверьте работоспособность запланированных задач?
- 9. Java/обработка об объявлении объектов и проверки на работоспособность
- 10. Jacob - Получить информацию о восстановлении системы (Java)
- 11. Как проверить работоспособность службы WCF?
- 12. Создание основной проверки на работоспособность
- 13. Могу ли я программно определить работоспособность ReplSet (Java Driver)
- 14. Как извлечь работоспособность системы из html с использованием регулярного выражения в C#
- 15. Как проверить работоспособность моего сервиса в Кубернете?
- 16. Java время системы
- 17. Реализация системы хранения в java
- 18. Секундомер - Класс системы в java
- 19. Создание системы таргетинга в Java
- 20. Время ввода системы в java
- 21. Искатель файловой системы в java
- 22. Как получить текущую дату и время системы в java
- 23. Как получить название файла jar из системы в java
- 24. Как получить Look & Feel операционной системы в Java 7?
- 25. Есть ли способ получить операционные системы удаленного хоста в java
- 26. Java | Slick2D | Сущность системы/игровой системы столкновения системы
- 27. Параметры системы сборки Java
- 28. Изучение устаревшей системы Java
- 29. Как получить время безотказной работы системы за последние 24 часа
- 30. Изменение системы Java
что зависит от ОС, но вы, вероятно, захотите выдать команду – mre
какой ОС? .. никак без внешней сторонней библиотеки или JNI. –
или посмотрите http://www.mkyong.com/java/how-do-get-time-in-milliseconds-in-java/ –