절전 모드 시간을 제외한 가동 시간을 표시하는 방법은 무엇입니까?

절전 모드 시간을 제외한 가동 시간을 표시하는 방법은 무엇입니까?

랩톱을 일시 중지 모드로 설정하고 나중에 깨웠더니 이제 약 23시간의 가동 시간이 표시됩니다( uptime). 이는 확실히 잘못된 것입니다. 나는 uptime그것이 시작되었을 때의 타임스탬프와 지금의 타임스탬프 사이의 차이를 반환하는 것이라고 생각합니다 .

일시 중지 및 최대 절전 모드와 같은 저전력 모드에서 소요된 시간을 제외하고 가동 시간을 표시하는 방법이 있습니까?

답변1

다음 명령은 내 Mint 19의 Python 2.7.15rc1에서 작동합니다.
수면 시간을 제외한 가동 시간이 표시됩니다.

python3 -c 'import time;print(f" {(time.clock_gettime(time.CLOCK_MONOTONIC))}")'

위에 표시된 시간은 소수점 이하 초 단위입니다.

python3 -c 'import time;second=int(time.clock_gettime(time.CLOCK_MONOTONIC));print(f" {second} seconds")'

위에 표시된 시간은 소수점 없이 초 단위입니다.

python3 -c 'import time;second=int(time.clock_gettime(time.CLOCK_MONOTONIC));minute=second//60;print(f" {minute} minutes")'

위에 표시된 시간은 분 단위입니다.

python3 -c 'import time;s=int(time.clock_gettime(time.CLOCK_MONOTONIC));h=s//3600;m=(s-h*3600)//60;print(f"{h} hours {m} minutes")'

위에는 시간과 분 단위의 시간이 표시되어 있습니다.

python3 -c 'import time,datetime;print(datetime.timedelta(seconds=time.clock_gettime(time.CLOCK_MONOTONIC)))'

시간을 시, 분, 초 단위로 표시합니다.

python3 -c 'import time,datetime;d=datetime.datetime(1,1,1)+datetime.timedelta(seconds=time.clock_gettime(time.CLOCK_MONOTONIC));print(f"{d.day-1} days, {d.hour} hours, {d.minute} minutes")'

일, 시간, 분 단위로 시간을 표시합니다.

나는 사용했다CLOCK_MONOTONIC그리고Awk내 Mint가 같은 날짜에 여러 번 실행될 경우 총 시간을 계산하는 스크립트를 만들었습니다. 이것Awk이 명령을 사용하여 주/월/년 단위로 총 시간을 계산할 수도 있습니다.

답변2

C 함수를 사용하고 싶을 수도 있습니다clock_gettime(CLOCK_MONOTONIC_RAW), (내가 아는 한) 어떤 유틸리티에서도 제공되지 않습니다. 주어진 답변을 보았습니다파이썬 예제액세스 방법에 관해서는 동일한 작업을 수행하기 위해 C 프로그램을 컴파일하는 것보다 쉬울 것입니다.

답변3

시스템 구문 분석journalctl

suspend.service시작 시간(재개 시)에서 systemd의 시작 시간을 빼면 일시 중지 시간이 나옵니다.

$ journalctl -b-0 | grep -E 'systemd\[1]: Start.*Suspend'
Oct 31 05:55:19 alien systemd[1]: Starting Suspend...
Oct 31 16:54:26 alien systemd[1]: Started Suspend.
Oct 31 23:21:21 alien systemd[1]: Starting Suspend...
Nov 01 04:29:12 alien systemd[1]: Started Suspend.
 (... SNIP ...)
Nov 07 05:53:36 alien systemd[1]: Starting Suspend...
Nov 07 16:37:36 alien systemd[1]: Started Suspend.
Nov 07 21:07:28 alien systemd[1]: Starting Suspend...
Nov 08 05:08:52 alien systemd[1]: Started Suspend.

표시된 항목은 Started Suspend.시스템이 일시 중지된 상태에서 재개된 시간으로 해석될 수 있습니다.

이 스크립트를 사용하여 형식화된 출력을 얻을 수 있습니다.

Bash 스크립트가 생성하는 내용은 다음과 같습니다.

$ suspendtime
Oct 31 05:55:19 to Oct 31 16:54:26 lasting 39,547 seconds
Oct 31 23:21:21 to Nov 01 04:29:12 lasting 18,471 seconds
  (... SNIP ...)
Nov 07 05:53:36 to Nov 07 16:37:36 lasting 38,640 seconds
Nov 07 21:07:28 to Nov 08 05:08:52 lasting 28,884 seconds

Linux uptime 693,600 seconds (8 days, 40 minutes)
16 Suspends 457,547 seconds (5 days, 7 hours, 5 minutes, 47 seconds)
Real uptime 236,053 seconds (2 days, 17 hours, 34 minutes, 13 seconds)

Linux는 8일 40분의 가동 시간을 보고합니다. 휴지시간까지 포함하면 약 2일 18시간 정도 됩니다.

관련 정보