활동 시간을 유지하고 보고서를 제공하는 소프트웨어가 있습니까? 집중된 창 및 창 제목을 기반으로합니다. 보고서는 특정 창과 제목과 같은 시간을 보냈습니다.
Application Title Time
Firefox Ask Ubuntu - Mozilla Firefox 5:58
활동 시간을 유지하고 보고서를 제공하는 소프트웨어가 있습니까? 집중된 창 및 창 제목을 기반으로합니다. 보고서는 특정 창과 제목과 같은 시간을 보냈습니다.
Application Title Time
Firefox Ask Ubuntu - Mozilla Firefox 5:58
답변:
편집 : 정렬 된 보고서 가있는 스크립트 버전은 여기 에서 찾을 수 있습니다
항상 스크립트를 작성하는 것이 재미 있습니다!
아래 스크립트는 다음과 같은 출력 (보고서)을 생성합니다.
------------------------------------------------------------
nautilus
0:00:05 (3%)
------------------------------------------------------------
0:00:05 (3%) .usagelogs
------------------------------------------------------------
firefox
0:01:10 (36%)
------------------------------------------------------------
0:00:05 (3%) The Asker or the Answerer? - Ask Ubuntu Meta - Mozilla Firefox
0:00:15 (8%) scripts - Is there software which time- tracks window & application usage? - Ask Ubuntu - Mozilla Firefox
0:00:10 (5%) Ask Ubuntu - Mozilla Firefox
0:00:15 (8%) Why is a one line non-understandable answer used as review audit? - Ask Ubuntu Meta - Mozilla Firefox
0:00:20 (10%) bash - How to detect the number of opened terminals by the user - Ask Ubuntu - Mozilla Firefox
0:00:05 (3%) BlueGriffon - Mozilla Firefox
------------------------------------------------------------
gedit
0:02:00 (62%)
------------------------------------------------------------
0:02:00 (62%) 2016_06_04_10_33_29.txt (~/.usagelogs) - gedit
============================================================
started: 2016-06-04 10:33:29 updated: 2016-06-04 10:36:46
============================================================
분당 한 번 업데이트됩니다.
보고서는 "알 수 없음"범주의 창을보고 할 수 있습니다. 윈도우가있는 경우 pid 0
( tkinter
윈도우, IDE 와 같은 Idle
윈도우 Python
) 그러나 창 제목과 사용법이 올바르게보고됩니다.
비밀번호 입력이있는 잠금 화면은 "nux 입력 창"으로보고됩니다.
백분율은 반올림 된 백분율로, 때로는 응용 프로그램의 백분율과 창 백분율의 합계 사이에 약간의 차이가 발생할 수 있습니다 .
예 : 응용 프로그램에 각각 0,7%
총 시간에 사용 된 두 개의 창이 사용 된 경우 두 창 은 1%
각각 보고 ( 0.7
-> 반올림 1
)하고 응용 프로그램의 사용 보고서 1%
( 1.4
-> 반올림 1
)
이러한 차이점이 전체 그림과 전혀 관련이 없다고 말할 필요는 없습니다.
#!/usr/bin/env python3
import subprocess
import time
import os
# -- set update/round time (seconds)
period = 5
# --
# don change anything below
home = os.environ["HOME"]
logdir = home+"/.usagelogs"
def currtime(tformat=None):
return time.strftime("%Y_%m_%d_%H_%M_%S") if tformat == "file"\
else time.strftime("%Y-%m-%d %H:%M:%S")
try:
os.mkdir(logdir)
except FileExistsError:
pass
# path to your logfile
log = logdir+"/"+currtime("file")+".txt"; startt = currtime()
def get(command):
try:
return subprocess.check_output(command).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
def time_format(s):
# convert time format from seconds to h:m:s
m, s = divmod(s, 60); h, m = divmod(m, 60)
return "%d:%02d:%02d" % (h, m, s)
def summarize():
with open(log, "wt" ) as report:
totaltime = sum([it[2] for it in winlist])
report.write("")
for app in applist:
wins = [r for r in winlist if r[0] == app]
apptime = sum([it[2] for it in winlist if it[0] == app])
appperc = round(100*apptime/totaltime)
report.write(("-"*60)+"\n"+app+"\n"+time_format(apptime)+\
" ("+str(appperc)+"%)\n"+("-"*60)+"\n")
for w in wins:
wperc = str(round(100*w[2]/totaltime))
report.write(" "+time_format(w[2])+" ("+\
wperc+"%)"+(6-len(wperc))*" "+w[1]+"\n")
report.write("\n"+"="*60+"\nstarted: "+startt+"\t"+\
"updated: "+currtime()+"\n"+"="*60)
t = 0; applist = []; winlist = []
while True:
time.sleep(period)
frpid = get(["xdotool", "getactivewindow", "getwindowpid"])
frname = get(["xdotool", "getactivewindow", "getwindowname"])
app = get(["ps", "-p", frpid, "-o", "comm="]) if frpid != None else "Unknown"
# fix a few names
if "gnome-terminal" in app:
app = "gnome-terminal"
elif app == "soffice.bin":
app = "libreoffice"
# add app to list
if not app in applist:
applist.append(app)
checklist = [item[1] for item in winlist]
if not frname in checklist:
winlist.append([app, frname, 1*period])
else:
winlist[checklist.index(frname)][
2] = winlist[checklist.index(frname)][2]+1*period
if t == 60/period:
summarize()
t = 0
else:
t += 1
스크립트 xdotool
는 창의 정보를 얻어야합니다
sudo apt-get install xdotool
스크립트를 빈 파일로 복사하여 다른 이름으로 저장하십시오. window_logs.py
스크립트를 테스트 실행하십시오 : 터미널에서 다음 명령으로 스크립트를 실행하십시오.
python3 /path/to/window_logs.py
1 분 후 스크립트는의 첫 번째 결과로 로그 파일을 만듭니다 ~/.usagelogs
. 파일에는 생성 날짜 및 시간이 시간 표시되어 있습니다. 파일은 분당 한 번 업데이트됩니다.
파일 맨 아래에는 최신 편집의 시작 시간과 시간 소인이 모두 표시됩니다. 이 방법으로 파일의 시간 범위를 항상 확인할 수 있습니다.
스크립트가 다시 시작되면 새로운 (start-) 타임 스탬프가있는 새 파일이 생성됩니다.
모두 제대로 작동하면 시작 응용 프로그램에 대시 : 시작 응용 프로그램> 추가를 추가하십시오. 다음 명령을 추가하십시오 :
/bin/bash -c "sleep 15 && python3 /path/to/window_logs.py"
~/.uselogs
기본적으로 숨겨진 디렉토리입니다. (in nautilus
) Ctrl+ H를 눌러 표시합니다.그대로, 스크립트는 창을 실제로 사용하고 있지 않다고 가정하면 5 초 동안 창의 활성을 반올림합니다. 값을 변경하려면 다음 줄의 스크립트 헤드에서 값을 설정하십시오.
# -- set update/round time (seconds)
period = 5
# --
대본은 매우 "주스가 적다". 시간 - 업데이트 이후 또한, 윈도우 당이 스크립트 내부에서 수행되는 로그 파일의 행 수는 사용 윈도우의 실제 수에 제한됩니다.
그럼에도 불구하고 유지하기 위해 너무 많은 줄 (= 창 레코드)이 누적되는 것을 방지하기 위해 몇 주 동안 스크립트를 연속으로 실행하지 않습니다.
이 arbtt
당신이 설명 정확히 않는다는 것을 : https://www.joachim-breitner.de/blog/336-The_Automatic_Rule-Based_Time_Tracker