Szukam prostego sposobu na określenie przybliżonej ilości czasu spędzanego na komputerze. Może to być trudne zadanie, jeśli próbujesz monitorować procesy, naciśnięcia klawiszy, kliknięcia myszą i tym podobne, ponieważ możesz robić wszystko, od myślenia o problemie z kodowaniem, czytania artykułu internetowego, rozmowy przez telefon lub chodzenia pies. Komputer nie może odczytać moich myśli. Ponieważ zostawiam komputery na 24/7 monitorowanie logowania nie będzie działać.
Wpadłem na pomysł rejestrowania, ile czasu komputer spędza w trybie wygaszacza ekranu. Mój błąd nie byłby wówczas większy niż iloczyn czasu bezczynności wygaszacza ekranu z liczbą przejść w tryb wygaszacza ekranu. Odjęcie tego od 24 godzin dałoby mi szacunek, który byłby uzasadniony dla moich celów.
Problem polega na tym: nie wiem, jak się zalogować, gdy wygaszacz ekranu włącza się i wyłącza. W tej chwili używam Ubuntu 10.10 na większości komputerów, a na niektórych z nich zacznę aktualizację do 11.04.
Jakieś pomysły?
[edytuj] Po dalszym googlowaniu trafiłem na monitor dbus, który wyglądał, jakby mógł działać, ale brakuje mu ważnego składnika. Oto uruchamiany przeze mnie skrypt, który uruchamia monitor jako demon:
#!/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
Oto wynik, jaki wytwarza po kilkukrotnym zablokowaniu i odblokowaniu ekranu:
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
Druga kolumna to oczywiście unix UTC w kilka sekund. Brakującym składnikiem jest to, że nie określa, czy wygaszacz ekranu jest włączony, czy wyłączony! Przypuszczam, że mogę założyć, że przełączają się od czasu, gdy zdarzyło się NameAcquired, ale denerwuje mnie, że może istnieć brakujące lub dodatkowe zdarzenie, którego nie mogę przewidzieć, co wytrąciłoby wszystko z synchronizacji.
Bardzo zobowiązany do pomysłów.
jkcunningham
źródło
Odpowiedzi:
Chciałbym podziękować i wesprzeć prosty, surowy skrypt (można go ulepszyć), umieść go w aplikacjach startowych za pomocą:
jest przygotowany na awarię / zaciemnienie systemu. To nie jest ciężko przetestowane ... ale działa teraz świetnie. utworzy 2 pliki, jeden w $ HOME (log) inny w / tmp (obejście awarii sys)
logSessionLock.sh
dziennik wygląda następująco:
źródło
„ Workrave ” nie tylko śledzi, czy korzystasz z komputera i pomaga robić przerwy w ciągu dnia, ale także zapewnia ładny zestaw statystyk, zarówno surowych (w pliku tekstowym), jak i za pomocą GUI (
Daily usage: 5:41:00 for Jul 21
). Statystyki obejmują również takie rzeczy, jak minuty użycia myszy, odległość ruchu myszy, naciśnięcia klawiszy itp.Zainstaluj go z oficjalnych repozytoriów, dodaj go do paska menu, kliknij prawym przyciskiem myszy i wybierz „statystyki”. Otrzymasz kalendarz do wyboru dnia, o którym chcesz wiedzieć. Lub spójrz na dane w ~ / .workrave / historystats
źródło
Jeśli usuniesz --profile, otrzymasz format, w którym brakuje znaczników czasu, ale ma on wpływ na to, czy wygaszacz ekranu jest aktywny.
Użyłem modyfikacji tego skryptu PHP, aby aktywować lub dezaktywować rzeczy w oparciu o mój wygaszacz ekranu
Inną opcją jest użycie
gnome-screensaver-command --query
. Używając crontaba, pozwalam bitcoinowi używać wszystkich 4 rdzeni, kiedy wygaszacz ekranu jest aktywny, ale dostaje tylko 1 rdzeń, gdy używam mojego komputera.WYŚWIETLANIE: Bez ustawienia WYŚWIETLANIE polecenie gnome-wygaszacz ekranu nie będzie w stanie znaleźć ekranu po uruchomieniu z crona. Musi to działać, gdy zalogował się ten sam użytkownik.
2>&1
: To przekierowuje wszelkie błędy na standardowe wyjście, które jest przechwytywane przez ...| grep -q 'is active';
: -q powoduje, że grep jest cichy, nic nie wyświetla. Ale polecenie zwraca sukces lub niepowodzenie, które jest używane przez if.Zdaję sobie sprawę, że żadne z nich nie jest kompletnym rozwiązaniem, ale mam nadzieję, że wystarczą na początek.
źródło
To jest bardziej kompletny skrypt. Możesz uruchomić go z crona co minutę, a jeśli wygaszacz ekranu jest aktywny, zapisze, jak długo był aktywny. Po dezaktywacji wykona ostatni pomiar i doda go do ~ / Screensaver.log. Jeśli uruchomisz go z crona, może to być niedokładne do 59 sekund za każdym razem, gdy wygaszacz ekranu się dezaktywuje.
źródło
date "+%Y %m %d %H %M
echo „$ SS_LAG $ DSTR” >> $ {HTDOCS} /data/work.log fidate "+%Y %m %d %H %M
echo „$ SS_LAG $ DSTR” >> $ {HTDOCS} /data/work.log fi [/ code] Daję: jak utworzyć blok kodu w komentarzu? 4 spacje nie działają.Używam
uptime
polecenia, ale nie podaje ono czasu aktywnego / nieaktywnego systemu. uptime zapewnia wyświetlanie w jednym wierszu następujących informacji. Aktualny czas, czas działania systemu, ilu użytkowników jest aktualnie zalogowanych, a średnie obciążenie systemu dla ostatnich 1, 5 i 15 minut.źródło