주의 깊게 읽으십시오. 이것은 일반적인 가동 시간 질문이 아닙니다.
나는 그렇지 않은 경향이 있다폐쇄하다내 컴퓨터 자체는 잠자기 상태로 설정됩니다. 부팅 시간이 더 빨라지고 WOL을 사용할 수 있습니다. 다양한 '가동 시간' 방법(sysinfo, uptime.exe, 작업 관리자 등)은 마지막 전체 부팅 이후의 시간을 표시합니다. 이는 수면에 소요된 시간이 고려된다는 의미입니다.진실가동시간; 즉, 마지막 부팅 이후 내 PC가 깨어 있는 시간만 소요됩니다.
답변1
이를 수행하는 소프트웨어가 없으므로 이를 수행할 수 있는 유일한 방법은 기본적으로 매초(또는 분)마다 변수에 +1을 제공하고 변수 값을 읽을 수 있는 스크립트를 작성하는 것입니다. . PC가 최대 절전 모드/절전 모드/등에 있는 경우 스크립트가 실행되지 않으므로 카운터가 증가하지 않습니다.
이러한 스크립트가 백그라운드에서 지속적으로 실행되면 시스템에 영향을 미칠 가능성이 높으므로 문제는 이를 얼마나 원하느냐는 것입니다.
(스크립트에 영향을 미치는 이유) 스크립트가 오래 실행될수록 숫자가 커지며, 값이 정말 높다는 것은 저장하는 데 더 많은 메모리가 필요하다는 의미입니다. (정수(65535)가 될 수 없는 값에 대해 이야기하고 있지만 이 정도로 높이면 시스템이 며칠/주 동안 가동되어야 한다고 가정합니다. 물론 일수를 계산하고 값을 재설정하는 스크립트를 작성할 수 있습니다. 이를 제거할 수 있지만, 스크립트가 주기 내에서 더 많은 코드를 거치게 되면 그 자체로도 영향을 미치게 됩니다.
답변2
Windows는 절전 모드에서 깨어나기 위한 시스템 이벤트를 생성합니다(이벤트 ID: 1, 소스: 전원 문제 해결사). 이 이벤트에는 수면 및 깨우기 시간이 포함됩니다.
원천:웨이크 소스 - 이벤트 뷰어 로그 읽기 - Windows 7 도움말 포럼
"실제 가동 시간" 값을 확인하려면 언급한 소스에서 마지막 부팅 시간을 확인한 다음 후속 깨우기 이벤트에서 절전 모드로 소요된 시간을 뺍니다.
참고: .NET 라이브러리를 사용하여 이벤트 로그를 쿼리하는 애플리케이션을 생성할 수 있습니다(수퍼유저에 대해서는 주제에서 벗어남).
답변3
"진정한 가동 시간"에 대한 정의가 얼마나 유연합니까? 변형LPChip의 답변 워크스테이션 잠금 및 워크스테이션 잠금 해제에 의해 트리거되는 예약된 작업을 작성한 다음 확실한 계산을 수행하는 것입니다.
그리고 수학이 명확하지 않은 경우:
- "논리적" 부팅 시간과 누적 가동 시간이라는 두 가지 값을 추적하세요. 한 번에 이 중 하나만 유효합니다. 따라서 실제로는 상황에 따라 결정될 수 있지만 어느 것이 유효한지 추적하기 위한 플래그도 필요합니다.
- 또한 시스템 부팅 시 실행되는 이벤트를 원하거나 "논리적" 부팅 시간을 실제 부팅 시간으로 초기화하는 다른 메커니즘이 필요할 수도 있습니다.
- 워크스테이션이 잠기면 현재 시간에서 논리적 부팅 시간을 빼고 이를 누적 가동 시간으로 저장합니다.
- 워크스테이션 잠금이 해제되면 현재 시간에서 누적 가동 시간을 빼고 이를 논리적 부팅 시간으로 저장합니다.
- 요청 시 현재 시간에서 논리적 부팅 시간을 빼고 이를 "실제" 가동 시간으로 보고합니다. (PC가 잠금 해제된 총 시간을 알려줍니다.)
예를 들어,
- 오전 9시에 하드 부팅을 수행하면 오전 9시가 논리적 부팅 시간으로 절약됩니다.
- 정오에 머신을 잠그면 누적 가동 시간으로 3시간(정오~오전 9시)이 절약됩니다.
- 오후 1시에 머신 잠금을 해제하면 오전 10시(오후 1시 - 3시간)가 논리적 부팅 시간으로 절약됩니다.
- 오후 6시에 가동 시간을 요청하면 8시간
(오후 6시 − 오전 10시 = (정오 − 오전 9시) + (오후 6시 − 오후 1시))이 보고됩니다.
잠자기 및 깨우기 작업을 실행하는 방법을 알아낼 수 있다면 그렇게 하면 요청한 내용을 정확하게 얻을 수 있습니다. (그러나 컴퓨터를 절전 모드로 전환하면 잠금 작업이 시작되며, 깨운 후 잠금 해제를 요구하도록 시스템을 구성했다고 가정합니다.)