Windows 8.1: как определить «истинное» время безотказной работы?

Windows 8.1: как определить «истинное» время безотказной работы?

Пожалуйста, прочитайте внимательно; это не обычный вопрос о времени безотказной работы.

Я не склоненнеисправностьмой компьютер как таковой, но вместо этого перевести его в спящий режим. Это ускоряет время загрузки и позволяет мне использовать WOL. Различные методы «uptime» (sysinfo, uptime.exe, Task Manager и т. д.) покажут время с момента последней полной загрузки, что означает, что время, проведенное в спящем режиме, учитывается. Я ищуистинныйвремя безотказной работы; то есть только время с момента последней загрузки, которое мой ПК провел в состоянии бодрствования.

решение1

Нет программного обеспечения, которое делает это, поэтому единственный способ сделать это — написать скрипт, который в основном дает переменной +1 каждую секунду (или минуту), и иметь способ считывать значение переменной. Если ваш ПК находится в режиме гибернации/сна/и т. д., скрипт не работает, поэтому счетчик не увеличивается.

Если такой скрипт постоянно работает в фоновом режиме, это, скорее всего, повлияет на работу системы, поэтому вопрос в том, насколько сильно вам это нужно?

(причина влияния на скрипт) чем дольше выполняется скрипт, тем больше становится число, а действительно большое значение означает, что ему нужно больше памяти для хранения. (речь идет о значениях, которые не могут быть целыми числами (65535), но я предполагаю, что если вы установите такое большое значение, ваша система должна работать в течение нескольких дней/недель. Конечно, вы можете написать свой скрипт для подсчета дней и сброса значения, что исключит это, но если тогда ваш скрипт выполняет больше кода в своем цикле, это само по себе также повлияет на него, пусть и незначительно.

решение2

Windows генерирует системное событие для выхода из спящего режима (Идентификатор события: 1, Источник: Power-Troubleshooter). Это событие содержит время сна и пробуждения.

Событие пробуждения

Источник:Источник пробуждения - Чтение журнала просмотра событий - Форумы помощи Windows 7

Чтобы определить значение «истинного времени безотказной работы», определите время последней загрузки (из указанных вами источников), а затем вычтите время, проведенное в спящем режиме, из всех последующих событий пробуждения.

Примечание: Вы можете создать приложение для запроса журнала событий с помощью библиотек .NET (не по теме Super User).

решение3

Насколько вы гибки в своем определении «истинного времени безотказной работы»? Вариация на темуОтвет LPChip заключается в написании запланированных задач, которые запускаются при блокировке и разблокировке рабочей станции, а затем в выполнении очевидных математических вычислений.

И, если математика не очевидна:

  1. Отслеживайте два значения: «логическое» время загрузки и кумулятивное время безотказной работы. Только одно из них будет действительным в каждый момент времени. Поэтому, возможно, вам также понадобится флаг, чтобы отслеживать, какое из них действительно, хотя это можно практически определить по контексту.
  2. Полагаю, вам также понадобится событие, запускаемое при загрузке системы, или какой-то другой механизм для инициализации «логического» времени загрузки в фактическое время загрузки.
  3. Когда рабочая станция заблокирована, вычтите логическое время загрузки из текущего времени и сохраните это как совокупное время безотказной работы.
  4. Когда рабочая станция разблокирована, вычтите совокупное время безотказной работы из текущего времени и сохраните это значение как логическое время загрузки.
  5. По запросу вычтите логическое время загрузки из текущего времени и сообщите это как «истинное» время безотказной работы. (Это даст вам общее количество времени, в течение которого ПК был разблокирован.)

Так, например,

  1. Если вы выполните жесткую загрузку в 9 утра, это сохранит 9 утра как логическое время загрузки.
  2. Если вы заблокируете машину в полдень, это сэкономит 3 часа (полдень - 9 утра) совокупного времени безотказной работы.
  3. Если вы разблокируете компьютер в 13:00, это сэкономит 10 утра (13:00 − 3 часа) в качестве логического времени загрузки.
  4. Если вы запросите время безотказной работы в 18:00, будет получен отчет о 8 часах
    (18:00 − 10:00 = (полдень − 9:00) + (18:00 − 13:00).

Если вы можете понять, как запускать задачи при переходе в спящий режим и пробуждении, сделайте это, и вы получите именно то, что просили. (Но перевод машины в спящий режим запустит задачу блокировки, и я предполагаю, что ваша система настроена на требование разблокировки после пробуждения.)

Связанный контент