스크린 세이버 활성 / 비활성 시간을 통해 컴퓨터 사용량을 측정하는 방법은 무엇입니까?


15

컴퓨터에서 하루를 보내는 데 걸리는 대략적인 시간을 결정하는 간단한 방법을 찾고 있습니다. 코딩 문제에 대한 생각, 웹 기사 읽기, 전화 통화 또는 전화 걸기 등의 작업을 수행 할 수 있기 때문에 프로세스, 키 누름, 마우스 클릭 등을 모니터링하려고하면 어려운 작업이 될 수 있습니다. 개. 컴퓨터가 내 마음을 읽을 수 없습니다. 컴퓨터를 연중 무휴 모니터링 상태로두기 때문에 로그인이 작동하지 않습니다.

컴퓨터가 화면 보호기 모드에서 소비하는 시간을 기록한다는 아이디어에 부딪 쳤습니다. 그러면 내 오류는 화면 보호기 모드로 전환되는 횟수와 함께 유휴 시간 화면 보호기의 곱보다 크지 않습니다. 24 시간에서 이것을 빼면 내 목적에 적합한 추정치를 얻을 수 있습니다.

문제는 : 스크린 세이버가 켜지고 꺼질 때 기록하는 방법을 모르겠습니다. 현재 대부분의 컴퓨터에서 Ubuntu 10.10을 실행 중이며 일부 컴퓨터에서 11.04로 업그레이드를 시작하려고합니다.

어떤 아이디어?

더 많은 인터넷 검색 후 나는 그것이 작동하는 것처럼 보였지만 중요한 성분이 빠져있는 dbus-monitor에 부딪쳤다. 모니터를 데몬으로 시작하는 스크립트는 다음과 같습니다.

#!/bin/bash
RUNNING=`ps -A | grep "dbus-monitor"`
if [ ! $RUNNING  ]; then
    echo "(Re)starting dbus-monitor daemon"
    nohup dbus-monitor "--profile" "type='signal',interface='org.gnome.ScreenSaver'" >> ${HOME}/sc.log &
fi

다음은 화면을 몇 번 잠금 및 잠금 해제 한 후 생성되는 출력입니다.

sig     1304860712      153829  2       /org/freedesktop/DBus   org.freedesktop.DBus    NameAcquired
sig     1304860717      318732  462     /org/gnome/ScreenSaver  org.gnome.ScreenSaver   ActiveChanged
sig     1304860725      547928  463     /org/gnome/ScreenSaver  org.gnome.ScreenSaver   ActiveChanged
sig     1304861018      17      464     /org/gnome/ScreenSaver  org.gnome.ScreenSaver   ActiveChanged
sig     1304862919      403523  466     /org/gnome/ScreenSaver  org.gnome.ScreenSaver   ActiveChanged

두 번째 열은 분명히 유닉스 UTC입니다. 누락 된 성분은 스크린 세이버가 켜져 있는지 꺼져 있는지 식별하지 못한다는 것입니다! NameAcquired가 발생하는 시간부터 전환한다고 가정 할 수 있지만 모든 것을 동기화하지 못하는 예상치 못한 이벤트가있을 수 있다고 생각합니다.

많은 아이디어가 필요합니다.

jkcunningham


햄스터와 같은 시간 관리 도구는 옵션입니까?
Nathan Osman

방금 설치했습니다. 아직 작업에 구체적으로 기록하지 않은 시간을 어떻게 처리할지는 확실하지 않지만 흥미로워 보입니다.
jkcunningham 2016 년

나는 30 분 정도 동안 지금 가지고 있었고 매번 시작 해야하는 것처럼 보입니다. 단점입니다. 나는 충전 목적, 컴퓨터에서 보낸 시간을 위해 특정 시간을 시계하려고하지 않습니다. 그리고 전원을 켜는 것을 잊어 버린 경우에는 설명이 없습니다. 그래도 여전히 놀고 있습니다.
jkcunningham 2016 년

1
이것은 PC에 소요되는 시간을 측정 할 때 매우 좋은 질문입니다. 스크린 세이버에 대한 아주 좋은 아이디어.
Luis Alvarado

github github.com/nitesh-/hoursboard 에서 확인하십시오 . 이 질문에 대답 할 수
Nitesh morajkar

답변:


4

감사하고 간단한 원시 스크립트 (개선 가능)를 제공하고 시작 응용 프로그램에 넣습니다.

xterm -e logSessionLock.sh

시스템 충돌 / 블랙 아웃도 준비되어 있습니다. 그것은 많이 테스트되지는 않았지만 지금까지는 잘 작동하고 있습니다. $ HOME (로그)에 다른 파일과 / tmp (sys 충돌 해결 방법)에 각각 2 개의 파일을 만듭니다.

logSessionLock.sh

#!/bin/bash

logFile="."`basename $0`".log"

function FUNClog {
  strTime=`gnome-screensaver-command --time`
  strDate=`date +"%Y%m%d-%H%M%S"`
  strLog="$strDate ($1) $strTime"
}

function FUNCwriteLog {
  echo $strLog >>$HOME/$logFile
  echo $strLog
}

active=false
firstTime=true

# restores last log entry in case of a system crash
strLog=`cat "/tmp/$logFile.tmp"`
FUNCwriteLog
echo "" >"/tmp/$logFile.tmp"
if [[ -n "$strLog" ]]; then #if has something, it was active when the system crashed
  active=true
fi

while true; do 
  if gnome-screensaver-command --query |grep -q "The screensaver is active"; then
    if ! $active; then
      # restore the saved tmp log
      strLog=`cat "/tmp/$logFile.tmp"`
      FUNCwriteLog

      # update log (can be off when this line is reached? once it seem to happen...)
      FUNClog BEGIN
      FUNCwriteLog #logs the begin time

      active=true
    else
      FUNClog ON #stores the ammount of time the screensaver has been ON
      echo $strLog >"/tmp/$logFile.tmp"
    fi
  else
    if $active; then
      FUNCwriteLog #saves the ammount of time the screensaver has been ON

      FUNClog OFF
      FUNCwriteLog
      echo "" >"/tmp/$logFile.tmp"

      active=false
    fi
  fi 

  sleep 1
done

로그는 다음과 같습니다.

 20120214-191528 (BEGIN) The screensaver has been active for 0 seconds.
 20120214-193602 (ON) The screensaver has been active for 1234 seconds.
 20120214-193603 (OFF) The screensaver is not currently active.

3

" Workrave "패키지는 컴퓨터 사용 여부를 추적 할뿐만 아니라 낮에 휴식을 취하는 데 도움이 될뿐만 아니라 원시 (텍스트 파일) 및 GUI ( Daily usage: 5:41:00 for Jul 21) 를 통해 유용한 통계를 제공합니다 . 통계에는 마우스 사용 시간, 마우스 이동 거리, 키 입력 등이 포함됩니다.

공식 저장소에서 설치하고 메뉴 표시 줄에 추가 한 다음 마우스 오른쪽 단추를 클릭하고 "통계"를 선택하십시오. 알고 싶은 요일을 선택할 수있는 달력이 제공됩니다. 또는 ~ / .workrave / historystats의 데이터를보십시오


1
이것은 매우 실행 가능한 솔루션처럼 보입니다. 다소 성가 시게 될 수있는 "마이크로 브레이크"미리 알림을 비활성화하는 방법을 찾고 싶습니다. 그렇지 않으면 내가 찾고있는 것만 누적되는 것처럼 보입니다. 감사!
jkcunningham

1
@jkcunningham 마우스 오른쪽 단추 클릭 / 기본 설정 대화 상자에서 마이크로 브레이크, 휴식 시간 또는 일일 제한을 쉽게 설정하거나 해제 할 수 있습니다. 물론, 눈, 손목, 팔 등은 실제로 정기적으로 휴식을 취하는 것이 좋지만, 작업을하면 쉽게 휴식을 취하거나 건너 뛰는 것을 쉽게하면서 작업을 쉽게 (심지어 재미있게) 할 수 있습니다. 당신은 뭔가 중간에 있습니다.
nealmcb

2

--profile을 제거하면 타임 스탬프가 누락 된 형식이 표시되지만 화면 보호기가 활성화되어 있는지 여부가 있습니다.

$ dbus-monitor "type='signal',interface='org.gnome.ScreenSaver'
...
signal sender=:1.46 -> dest=(null destination) serial=1881 path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=ActiveChanged
boolean true

이 PHP 스크립트의 수정을 사용하여 스크린 세이버를 기반으로 항목을 활성화 또는 비활성화했습니다.

#!/usr/bin/php
<?php
$handle = popen("dbus-monitor 'path=/org/gnome/ScreenSaver, member=ActiveChanged' 2>&1", 'r');
echo "'$handle'; " . gettype($handle) . "\n";
while (!feof($handle)) {
    $read = fgets($handle);
    if(preg_match("/^\s+boolean (\w+)/", $read, $matches))
    {
                $active = ($matches[1] == 'true');
                // do something here
    }
}
pclose($handle);
?>

다른 옵션은를 사용하는 것 gnome-screensaver-command --query입니다. crontab을 사용하면 스크린 세이버가 활성화 될 때 비트 코인이 4 코어를 모두 사용하도록했지만 컴퓨터를 사용할 때 1 코어 만 얻습니다.

DISPLAY=":0.0"
* * * * * if gnome-screensaver-command --query 2>&1 | grep -q 'is active'; then bitcoind setgenerate true 4; else bitcoind setgenerate true 1; fi

디스플레이 : 디스플레이 설정하지 않으면 gnome-screensaver-command는 cron에서 실행할 때 화면을 찾을 수 없습니다. 로그인 한 동일한 사용자로 실행해야합니다.

2>&1: 이것은 오류를 표준 출력으로 보내며, 이는 표준 출력으로 캡처됩니다.

| grep -q 'is active';: -q는 grep을 조용하게하며 아무 것도 출력하지 않습니다. 그러나이 명령은 if에서 사용하는 성공 또는 실패를 반환합니다.

나는 이것들 중 어느 것도 완벽한 해결책이 아니라는 것을 알고 있지만, 그들이 당신을 시작하기에 충분하기를 바랍니다.


2

이것은 더 완전한 스크립트입니다. 매분마다 cron에서 트리거 할 수 있으며 스크린 세이버가 활성화되면 활성화 된 시간을 기록합니다. 비활성화되면 마지막 측정을 수행하여 ~ / Screensaver.log에 추가합니다. cron에서 실행하면 화면 보호기가 비활성화 될 때마다 최대 59 초 동안 정확하지 않을 수 있습니다.

#!/bin/bash
export DISPLAY=':0'
if gnome-screensaver-command -q 2>&1 | grep -q 'is active'; then
    # this will overwrite the file each time.
    gnome-screensaver-command --time > /tmp/ScreensaverActiveTime
# if the screensaver is not active and we have the file from last time this ran ...
elif [ -e /tmp/ScreensaverActiveTime ]; then
    # append it to our log and ...
    cat /tmp/ScreensaverActiveTime >> ~/Screensaver.log
    # remove the file. It will be recreated once the screensaver activates again.
    rm /tmp/ScreensaverActiveTime
fi

나는이 접근법을 좋아한다. 화면 보호기 모드에서 정지 / tmp / screensaveractivetime이 기록되도록 남겨둔 상태에서 시스템이 다운되면 코너 문제가 발생할 수 있습니다. #! / bin / bash ## 4 상태 : ## * working ## * 작동하지 않지만 화면 보호기는 아직 활성화되지 않음 ## * 화면 보호기 활성화 ## * 컴퓨터 전원 고장 또는 꺼짐 # # gnome-screensaver-command -q 2> & 1 인 경우 처음 두 상태를 내보내기 DISPLAY = ': 0'SS_LAG = 10을 기록하고 싶습니다. grep -q '비활성'; 그러면 DSTR = date "+%Y %m %d %H %M echo "$ SS_LAG $ DSTR">> $ {HTDOCS} /data/work.log fi
jkcunningham

좋아, 그것은 잘 운동하지 않았다-편집을 위해 최대 5 분. 이번에는 코드 마크 다운이 표시됩니다. [code] #! / bin / bash # 4 상태 : # * working # * idle, screensaver inactive # * screensaver active # * computer off # 처음 두 개를 기록하고 싶습니다 gnome-screensaver-command -q 2> & 1 인 경우 화면 보호기 지연 설정 내보내기 DISPLAY = ': 0'SS_LAG = 10 grep -q '비활성'; 그런 다음 DSTR = date "+%Y %m %d %H %M echo "$ SS_LAG $ DSTR">> $ {HTDOCS} /data/work.log fi [/ code] 내가주는 : 주석에서 코드 블록을 어떻게 작성합니까? 4 칸이 작동하지 않습니다.
jkcunningham 2016 년

-1

uptime명령을 사용 하지만 시스템의 활성 / 비활성 시간을 제공하지는 않습니다. 가동 시간은 다음 정보를 한 줄로 표시합니다. 현재 시간, 시스템 실행 시간, 현재 로그온 한 사용자 수 및 지난 1, 5 및 15 분 동안의 시스템로드 평균.


현재 가동 시간은 81 일 23 시간 25 분입니다. 나는 오랫동안 컴퓨터 앞에 앉아 있지 않았 음을 확신합니다. 고맙지 만 작동하지 않습니다. 나는 매일 컴퓨터 앞에 얼마나 오래 앉아 있는지 결정할 방법을 찾고 있습니다. 그래서 화면 보호기의 활성 / 비활성 시간을보고 있습니다.
jkcunningham

잘 됐네요 예, 언급했듯이 시스템의 활성 / 비활성 시간을 제공하지 않으며 스크린 세이버 활성 / 비활성 시간에서 시스템을 계산하는 방법을 모르겠습니다.
Chethan S.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.