uLogeMe - Seu Logger pessoal

Este post abordará um programa Open-Source escrito em Python, Bash e JavaScript que tem por finalidade salvar todas as atividades feitas no computador. Ele armazenará todos os nomes de janelas abertas no dia, bem como a hora que esta janela foi aberta. Posteriormente, com todos os dados salvos, ele cria de forma automática várias estatísticas de uso, possibilitando fácil visualização de como o tempo foi gasto em cada atividade. Não preocupe, seus dados pertencerão somente a você! O uLogMe não faz upload de absolutamente nada para qualquer armazenamento externo.

Sumário

Para nos organizarmos melhor nesse post, teremos a seguinte estrutura:

Requisitos

  • Para que você possa instalar esse programa é necessário que você tenha um sistema operacional Linux. (caso você tenha um sistema operacional OS X, veja a página do criador original, Karpathy, no github). Esse post é baseado na versão criada pelo Naereen, que fez umas boas modificações no código original.
    Me desculpe, se você usa Windows não conseguirá usar o uLogMe…

  • Será necessário que você algum conhecimento básico sobre operações por linha de comando (não se preocupe, tentarei ser o mais simples possível)

Um breve overview

Hoje nós falaremos sobre o uLogMe. Ele é um programa que salva toda a sua atividade feita no computador, quanto tempo você gasta em cada janela aberta, e no final mosta alguns gráficos bem legais. Dessa forma, você pode analisar como está gastando seu tempo, ver se tem alguma atividade atrapalhando sua produtividade ~Instagram~ e, assim, tomar medidas para melhorar isso.

Aqui estão alguns exemplos de estatísticas geradas automaticamente:

daily view - ulogme

Resumo das atividades do dia.

key strokes

Número de teclas digitadas por segundo - em cada janela.

bar codes

"Código de Barras" mostrando, por grupos, quanto tempo foi gasto em cada atividade. Por exemplo, minha segunda linha corresponde à linha de estudos bíblicos/devocinal. Com esse gráfico é possível ver que meu perído de devocional esse dia foi entre as 10:30 até as 11:30 mais ou menos.

bar codes

O uLogMe também apresenta um overview de todos os dias dos quais ele tem dados

bar codes

Também tem o total de tempo por janela (coluna da esquerda) e o total de teclas digitadas em cada janela (coluna da direita).

bar codes

E, por fim, temos um gráfico com a frequência, quantidade e distribuição de teclas digitadas durante o dia.

E aí, o que achou das estatísticas que o uLogMe gera?

Bom, se você se interessou de ter acesso a esses dados de uso, vamos passar para a parte de instalação do programa.

Preparando o terreno

Instalando Pacotes Necessários

Primeiramente, é bom que você dê uma olhada na página de instalação oficial.

Como requisitos para correto funcionamento, você terá que instalar os seguintes pacotes: git, xdotool, xinput, wmctrl e xprintidle

Se seu sistema for o Debian ou algum dos seus derivados (como o Ubuntu, Linux Mint, etc.) você pode executar o seguinte comando para instalar todos estes pacotes de uma vez só:

sudo apt install git xdotool xinput wmctrl xprintidle

Caso você use uma distro não baseada em Debian, pode instalar esses pacotes substituindo apt por pacman (ArchLinux) ou yum (Fedora), por exemplo.

Baixando o Programa

Bem, agora que os pacotes necessários estão intalados, você terá de baixar o programa. Primeiro, abra o terminal e digite:

cd ~/.local/

Com esse comando, você está mudando da pasta atualmente aberta para a pasta ~/.local/. (note que ~ é simplesmente um atalho para o diretório do seu usuário atual, com o formato /home/<USUÁRIO>/. No meu caso, seria o diretório /home/matheus/). Você pode escolher qualquer pasta para salvar o programa. Não necessáriamente ele tem que estar localizado na pasta .local.

Agora que você está dentro do diretório no qual deseja instalar o uLogMe, você pode baixá-lo com o comando:

git clone https://github.com/Naereen/uLogMe.git ulogme

Pronto. Agora que você tem o programa baixado, vamos entender como ele está organizado.

Entendendo os diretórios do uLogMe

Essa é uma parte importante, pois entendendo como o uLogMe foi escrito te ajudará a modificá-lo no futuro. Assim, você poderá personalizá-lo para ficar da forma como você achar melhor.

Bom, assumindo que você instalou o programa no diretório ~/.local/ com o nome de ulogme, vamos agora explorar o que tem em cada pasta:

cd ~/.local/ulogme/

ls -l

Rodando esses comandos, nos asseguramos que estamos na pasta que o uLogMe foi instalado, e também podemos ver quais são os arquivos e subdiretórios que ele contém.

Você deve ter um output mais ou menos assim:

drwxr-xr-x 2 matheus matheus  4096 jul 22 08:10 logs
drwxr-xr-x 7 matheus matheus  4096 jul 10 23:50 render
drwxr-xr-x 2 matheus matheus  4096 jul 10 22:27 screenshots
drwxrwxr-x 4 matheus matheus  4096 jul 10 23:18 scripts
-rw-r--r-- 1 matheus matheus    25 jun 14 09:12 _config.yml
-rw-r--r-- 1 matheus matheus  1123 jun 14 09:12 LICENSE
-rw-r--r-- 1 matheus matheus  1406 jun 14 09:12 nginx.conf
-rw-r--r-- 1 matheus matheus 16156 jun 14 09:12 README.md

As linhas que começam com d indicam que o output é um diretório. Portanto, no primeiro nível dentro do diretório ~/.local/ulogme/, temos que logs, render, screenshots e scripts são diretórios. O outros são arquivos.

  • _config.yml é o arquivo principal de configuração da página Web que o uLogMe usa para mostrar as estatísticas.
  • LICENSE é a licença de uso do programa.
  • nginx.conf é o arquivo que configurará o servidor local para mostrar as estatísticas por qualquer navegador Web. (Uilizarei o Firefox durante este post, mas qualquer navegador deve funcionar, não se preocupe).
  • README.md é o arquivo com as informações de instalação (em inglês), do autor do uLogMe. Você pode acessar o mesmo arquivo, com uma formatação mais bacana, nesse link.

Vamos agora para o diretório scripts. Esse é o diretório que contém todos os arquivos responsáveis por criar o servidor Web (que permitirá a você ter acesso fácil às estatísticas geradas) e, também, por fazer a coleta dos dados. Pense nesse diretório como sendo o motor de todo o programa.

cd ./scripts

ls -l

Os arquivos são os seguintes:

drwxrwxr-x 2 matheus matheus  4096 jul 10 23:20 icons
drwxrwxr-x 2 matheus matheus  4096 jul 11 22:24 __pycache__
-rwxrwxr-x 1 matheus matheus  3402 jun 14 09:12 color.sh
-rw-rw-r-- 1 matheus matheus  7196 jun 14 09:12 export_events.py
-rw-rw-r-- 1 matheus matheus  6275 jun 14 09:14 export_events.pyc
-rwxrwxr-x 1 matheus matheus  4211 jun 14 09:12 keyfreq.sh
-rw-rw-r-- 1 matheus matheus  4184 jun 14 09:12 legacy_split_events.py
-rwxrwxr-x 1 matheus matheus  7096 jun 14 09:12 logactivewin.sh
-rw-rw-r-- 1 matheus matheus   872 jun 14 09:12 logdesktop.sh
-rw-rw-r-- 1 matheus matheus   737 jun 14 09:12 note.sh
-rw-rw-r-- 1 matheus matheus  9242 jun 14 09:12 notify.py
-rw-rw-r-- 1 matheus matheus  6652 jun 14 09:14 notify.pyc
-rw-rw-r-- 1 matheus matheus 10126 jun 14 09:12 README.md
-rw-rw-r-- 1 matheus matheus  1971 jun 14 09:12 rewind7am.py
-rw-rw-r-- 1 matheus matheus  2159 jun 14 09:14 rewind7am.pyc
-rwxrwxr-x 1 matheus matheus   646 jul 16 17:13 ulogme_data.sh
-rw-rw-r-- 1 matheus matheus  4638 jun 14 09:12 ulogme_serve_https.py
-rw-rw-r-- 1 matheus matheus  8480 jun 14 09:12 ulogme_serve.py
-rw-rw-r-- 1 matheus matheus  1797 jun 14 09:12 ulogme_serve.sh
-rw-rw-r-- 1 matheus matheus  1682 jun 14 09:12 ulogme_tmux.sh

Se você tem um conhecimento básico de Python e Bash, recomendo que dê uma olhada em cada um dos arquivos. Agora, mesmo que você não conheça nenhuma dessas linguagens, eu vou dar uma explicada básica sobre o que o programa está fazendo em cada um dos 4 arquivos principais do uLogMe.

  1. ulogme_data.sh - Esse é o principal arquivo de configuração, responsável por iniciar os sub-scripts que farão a coleta de dados. Pense nele como girar a chave de um carro, para dar a partida no motor.

  2. keyfreq.sh - Esse script é responsável por contar quantas teclas foram digitadas por segundo, bem como em qual janela isso ocorreu.

  3. logactivewin.sh - Esse scritp escaneia, a cada 2 segundos, qual a janela ativa no momento, salvando o resultado em um arquivo .txt dentro da pasta ../logs/. (Pois é, ele faz a checagem nesse intervalo bem curto! Mas, mesmo assim, não consome praticamente nada de CPU ou RAM. Caso você queira modificar o tempo de checagem, esse é o script que você tem que modificar)

  4. color.sh - Esse script basicamente deixa seu terminal com cores personalizadas.

Como dá pra perceber, é um resumo extremamente superficial. Foi só pra você ter uma noção de quais são os principais scripts e onde procurar primeiro, caso você deseje modificar alguma coisa.

Passando agora para a pasta logs: Essa é a pasta na qual o uLogMe salva todos os dados coletados. Ela está em: ~/.local/ulogme/logs/

cd ~/.local/ulogme/logs/

ls -l

O output será um conjunto de arquivos no formato .txt.

  • keyfreq_<algum_número>.txt é um arquivo contendo as informações de quantas teclas foram digitadas por segundo em cada dia específico. (você terá um novo arquivo keyfreq_<algum_número>.txt para cada dia que o uLogMe coletou dados).
  • keyfreq_today.txt é simplesmente um atalho para o arquivo keyfreq_<dia_atual>.txt.
  • window_<algum_número>.txt é um arquivo contendo as informações de todas as janelas abertas no dia, bem como o horário em que isso ocorreu.

No meu caso, o output do comando ls -l é assim:

-rw-r--r-- 1 matheus matheus   6153 jun 14 17:17 keyfreq_1560506400.txt
-rw-r--r-- 1 matheus matheus   6118 jun 15 18:10 keyfreq_1560592800.txt
-rw-r--r-- 1 matheus matheus   1489 jun 17 06:21 keyfreq_1560679200.txt
-rw-r--r-- 1 matheus matheus   2858 jun 17 23:08 keyfreq_1560765600.txt
-rw-r--r-- 1 matheus matheus  18355 jun 18 20:55 keyfreq_1560852000.txt
-rw-r--r-- 1 matheus matheus   4104 jun 19 23:12 keyfreq_1560938400.txt
-rw-r--r-- 1 matheus matheus   6620 jun 20 15:42 keyfreq_1561024800.txt
-rw-r--r-- 1 matheus matheus   3505 jun 21 17:57 keyfreq_1561111200.txt
-rw-r--r-- 1 matheus matheus  21067 jun 23 02:07 keyfreq_1561197600.txt
-rw-r--r-- 1 matheus matheus  15343 jun 23 17:36 keyfreq_1561284000.txt
-rw-r--r-- 1 matheus matheus   2435 jun 24 13:58 keyfreq_1561370400.txt
-rw-r--r-- 1 matheus matheus  20283 jun 25 17:10 keyfreq_1561456800.txt
-rw-rw-r-- 1 matheus matheus   4647 jul 11 23:50 keyfreq_1562839200.txt
-rw-rw-r-- 1 matheus matheus  17650 jul 12 22:45 keyfreq_1562925600.txt
-rw-rw-r-- 1 matheus matheus  12790 jul 13 23:08 keyfreq_1563012000.txt
-rw-rw-r-- 1 matheus matheus  17140 jul 16 23:14 keyfreq_1563271200.txt
-rw-rw-r-- 1 matheus matheus  27797 jul 18 00:01 keyfreq_1563357600.txt
-rw-rw-r-- 1 matheus matheus  23740 jul 18 22:54 keyfreq_1563444000.txt
-rw-rw-r-- 1 matheus matheus  15175 jul 19 23:51 keyfreq_1563530400.txt
-rw-rw-r-- 1 matheus matheus  19401 jul 20 21:07 keyfreq_1563616800.txt
-rw-rw-r-- 1 matheus matheus  11582 jul 21 17:49 keyfreq_1563703200.txt
-rw-rw-r-- 1 matheus matheus   9644 jul 22 12:05 keyfreq_1563789600.txt
lrwxrwxrwx 1 matheus matheus     22 jul 22 08:10 keyfreq_today.txt -> keyfreq_1563789600.txt
-rw-r--r-- 1 matheus matheus     47 jun 14 17:25 notes_1560506400.txt
-rw-r--r-- 1 matheus matheus  38281 jun 14 19:25 window_1560506400.txt
-rw-r--r-- 1 matheus matheus  68570 jun 15 22:28 window_1560592800.txt
-rw-r--r-- 1 matheus matheus   4714 jun 17 06:35 window_1560679200.txt
-rw-r--r-- 1 matheus matheus   5564 jun 17 23:08 window_1560765600.txt
-rw-r--r-- 1 matheus matheus 119147 jun 18 21:26 window_1560852000.txt
-rw-r--r-- 1 matheus matheus  45114 jun 20 00:12 window_1560938400.txt
-rw-r--r-- 1 matheus matheus  60609 jun 20 21:49 window_1561024800.txt
-rw-r--r-- 1 matheus matheus 101821 jun 21 23:01 window_1561111200.txt
-rw-r--r-- 1 matheus matheus 138158 jun 23 02:07 window_1561197600.txt
-rw-r--r-- 1 matheus matheus  74921 jun 23 17:37 window_1561284000.txt
-rw-r--r-- 1 matheus matheus  16199 jun 24 13:58 window_1561370400.txt
-rw-r--r-- 1 matheus matheus 102010 jun 25 19:40 window_1561456800.txt
-rw-rw-r-- 1 matheus matheus  21484 jul 11 23:50 window_1562839200.txt
-rw-rw-r-- 1 matheus matheus  86493 jul 12 22:45 window_1562925600.txt
-rw-rw-r-- 1 matheus matheus  50954 jul 13 23:08 window_1563012000.txt
-rw-rw-r-- 1 matheus matheus 139738 jul 16 23:14 window_1563271200.txt
-rw-rw-r-- 1 matheus matheus 176667 jul 18 00:02 window_1563357600.txt
-rw-rw-r-- 1 matheus matheus 105103 jul 18 22:53 window_1563444000.txt
-rw-rw-r-- 1 matheus matheus 117138 jul 19 23:51 window_1563530400.txt
-rw-rw-r-- 1 matheus matheus 101130 jul 20 21:07 window_1563616800.txt
-rw-rw-r-- 1 matheus matheus 123323 jul 21 17:49 window_1563703200.txt
-rw-rw-r-- 1 matheus matheus  62594 jul 22 12:04 window_1563789600.txt

É bom você saber onde seus dados estão armazenados. Assim, você pode fazer backup deles (É sempre melhor previnir do que remediar). Além disso, caso você queira apagar todos os seus dados, por qualquer motivo que seja, é só deletar os arquivos dentro da pasta logs.

Uma última pasta que você precisa conhecer é a pasta render.

vamos acessá-la e ver o que ela contém com o comando:

cd ~/.local/ulogme/render/

ls -l

O output deve ser algo assim:

drwxr-xr-x 2 matheus matheus  4096 jul 10 22:28 css
drwxrwxr-x 2 matheus matheus  4096 jul 10 23:39 images
drwxrwxr-x 2 matheus matheus  4096 jul 10 23:45 js
drwxrwxr-x 2 matheus matheus  4096 jul 21 14:00 json
drwxrwxr-x 2 matheus matheus  4096 jul 10 23:50 svg
-rw-r--r-- 1 matheus matheus   318 jun 14 09:12 favicon.ico
-rw-r--r-- 1 matheus matheus  5529 jun 14 09:12 favicon.png
-rw-r--r-- 1 matheus matheus 38558 jun 14 09:12 index.html
-rw-r--r-- 1 matheus matheus    26 jun 14 13:48 ls
-rw-r--r-- 1 matheus matheus 20905 jun 14 09:12 overview.html
-rw-r--r-- 1 matheus matheus   164 jun 14 09:12 README.md
-rw-r--r-- 1 matheus matheus  5289 jun 15 21:21 server.pem

Para resumir, essa pasta contém todos os dados necessários para produzir as páginas Web que te permitirão analisar as estatísticas geradas. É basicamente a pasta que com os scripts que criarão a interface gráfica do uLogMe.

Configuração

Como a pasta render possui muitas coisas, nós vamos ver somente o arquivo render_settings_example.js, para aprender como a classificação dos dados funciona. Depois, você ficará responsável por criar a sua própria regra de classificação.

Bom, nessa parte, é interessante que você tenha algum editor de textos para poder ler o arquivo render_settings_example.js enquanto em vou comentando ele (por ser bem extenso, optei por não colocá-lo aqui).

Vamos, então, acessar esse arquivo:

cd ~/.local/ulogme/render/js/

<EDITOR_DE_TEXTO> render_settings_example.js

Note que você deverá substituir <EDITOR_DE_TEXTO> pelo seu atual editor de texto. Os mais comuns são: gedit, kate e leafpad. Você só precisa saber qual quer usar. No meu caso, como gosto bastante do sublime, o comando seria subl render_settings_example.js.

Agora, com esse arquivo já aberto, vamos dar uma olhada no que ele faz:

  1. Linhas 5-11: Explicação de como a classificação de cada janela funciona. (Se souber inglês, leia as instruções dessas linhas. Se não souber, sempre tem um jeito ;D )

  2. Linhas 12-90: É basicamente da seguinte forma: Digamos que a sua atual janela tenha por nome YouTube - Mozilla Firefox. O script vai analisar, de cima para baixo, se o nome da janela apresenta algum dos padrões, especificados por pattern: /<PADÃRO>/. Se ela apresentar, então ele irá considerar que essa janela é referente a algum grupo, segundo a regra mapto: <NOME_DO_GRUPO>, presente na mesma linha. No caso da janela YouTube - Mozilla Firefox, observe que primeiro o programa irá considerar que essa janela pertence ao grupo Firefox, conforme especificado na regra da linha 15. Entretanto, ele vai fazer a análise para todas as demais linhas também. Portanto, quando chegar na linha 38, ele vai modificar o grupo dessa janela, passando de Firefox para Youtube. Dessa forma, é possível especificar grupos de forma bem refinada.

  3. Linhas 98-108: Qualquer nome de janela que não corresponder a nenhum padrão especificado anteriormente terá seu grupo definido como MISC

  4. Linhas 110-130: Essas linhas vão configurar os grupos que serão renderizados juntos, em uma mesma linha, no campo “Código de Barras”. A configuração que eu fiz, para gerar esse resultado que você viu na imagem, foi esse aqui:

    var display_groups = [];
    
    display_groups.push(['PDF', 'YouTube', 'VLC', 'GMusicBrowser', 'Anki', 'College', 'Bioinformatics', 'Wikipedia', 'English', 'Interval', 'Readings']); // Studying
    
    display_groups.push(['Bible']); // TSD
    
    display_groups.push(['Matlab', 'Notebook', 'Terminal', 'GitHub', 'Bitbucket', 'ST3', 'ST3 Python', 'ST3 Bash', 'ST3 JS', 'ST3 HTML', 'ST3 CSS', 'ST3 LaTeX', 'ST3 Markdown', 'ST3 rST', 'VS-Code', 'VS-Code Python', 'VS-Code Bash', 'VS-Code JS', 'VS-Code HTML', 'VS-Code CSS', 'VS-Code LaTeX', 'VS-Code Markdown', 'VS-Code rST', 'Atom', 'Atom Python', 'Atom Bash', 'Atom JS', 'Atom HTML', 'Atom CSS', 'Atom LaTeX', 'Atom Markdown', 'Atom rST', 'PyCharm', 'PyCharm Python', 'PyCharm Markdown', 'PyCharm rST']); // Coding related
    
    display_groups.push(['Chats', 'Firefox', 'Agenda']); // Internet
    
    display_groups.push(['Reddit', 'Mails', 'Skype', 'Facebook', 'Slack']); // Social browsing
    
    display_groups.push(['Time-Tracker', 'PC-Config', 'PC-Automating', 'Searching-Local_Files', 'Backups']); // Computer Related
    
    display_groups.push(['Computer idle', 'Computer locked', 'Computer suspended']); // computer not being used
    
  5. Linhas 133-140: Essas linhas vão configurar os grupos renderizados no primeiro gráfico mostrado. A configuração que eu usei para gerar a imagem que você acabou de ver (se não viu, clique no link) foi essa aqui:

    var activity_groups = [];
    
    activity_groups.push({name:"Studying", titles: ['PDF', 'YouTube', 'VLC', 'GMusicBrowser', 'Anki', 'College', 'Bioinformatics', 'Wikipedia', 'English', 'Interval', 'Readings']});
    
    activity_groups.push({name:"TSD", titles: ['Bible']});
    
    activity_groups.push({name:"Coding", titles: ['Matlab', 'Notebook', 'Terminal', 'GitHub', 'Bitbucket', 'ST3', 'ST3 Python', 'ST3 Bash', 'ST3 JS', 'ST3 HTML', 'ST3 CSS', 'ST3 LaTeX', 'ST3 Markdown', 'ST3 rST', 'VS-Code', 'VS-Code Python', 'VS-Code Bash', 'VS-Code JS', 'VS-Code HTML', 'VS-Code CSS', 'VS-Code LaTeX', 'VS-Code Markdown', 'VS-Code rST', 'Atom', 'Atom Python', 'Atom Bash', 'Atom JS', 'Atom HTML', 'Atom CSS', 'Atom LaTeX', 'Atom Markdown', 'Atom rST', 'PyCharm', 'PyCharm Python', 'PyCharm Markdown', 'PyCharm rST']});
    
  6. Linhas 143-151: Configuram quais grupos são considerados “Continuous typing”. No caso, eu mudei “Continuous typing” para “Studying Hard” (Você pode mudar o nome no título na linha 150)

  7. Linhas 151-162: Algumas outras menores funcionalidades que o uLogMe oferece.

Certo, agora que você já sabe como configurar as regras que classificarão as janelas, você precisará criar as suas próprias. Eu recomendo que você use o arquivo render_settings_example.js como um modelo a partir do qual você possa criar o seu render_settings.js, que é o arquivo que o uLogMe usará para fazer as classificações de cada janela que ele salva.

Para isso, criaremos uma cópia do arquivo render_settings_example.js, com o nome de render_settings.js:

cd ~/.local/ulogme/render/js/

cp ./render_settings_example.js ./render_settings.js

Agora, é só editar o arquivo render_settings.js para se adequar às suas necessidades.

Instalação

Agora que você já conhece como o uLogMe é organizado e já configurou os arquivos necessários, vamos partir para a parte de instalação.

  1. Precisamos tornar alguns scripts executáveis:

    cd ~/.local/ulogme/scripts/
    
    chmod +x ulogme_data.sh
    chmod +x keyfreq.sh
    chmod +x logactivewin.sh
    chmod +x color.sh
    
  2. Agora, vamos fazer com que o script principal, ulogme_data.sh seja iniciado quando seu computador ligar:

    crontab -e  # Vai abrir o menu de edição do cron (dê uma pesquisada por "crontab" na internet se você não sabe como usar ainda)
    

    Vá para a última linha do seu contrab e adicione o seguinte comando: @reboot sh $HOME/.local/ulogme/scripts/ulogme_data.sh (Lembre-se de que no editor do crontab, para copiar um texto você deve usar Ctrl+Shift+C, e para colar deve usar Ctrl+Shift+V)
    Depois, certifique-se de adicionar uma linha vazia ao final do arquivo.
    No final, seu crontab deve estar mais ou menos assim:

    
    # Edit this file to introduce tasks to be run by cron.
    #
    # Each task to run has to be defined through a single line
    # indicating with different fields when the task will be run
    # and what command to run for the task
    #
    # To define the time you can provide concrete values for
    # minute (m), hour (h), day of month (dom), month (mon),
    # and day of week (dow) or use '*' in these fields (for 'any').#
    # Notice that tasks will be started based on the cron's system
    # daemon's notion of time and timezones.
    #
    # Output of the crontab jobs (including errors) is sent through
    # email to the user the crontab file belongs to (unless redirected).
    #
    # For example, you can run a backup of all your user accounts
    # at 5 a.m every week with:
    # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
    #
    # For more information see the manual pages of crontab(5) and cron(8)
    #
    # m h  dom mon dow   command
    
    @reboot sh $HOME/.local/ulogme/scripts/ulogme_data.sh
    
    

    (Certifique-se de que existe uma linha em branco no final do aquivo!)
    (Para sair do editor, digite Ctrl+X, ele vai te perguntar se você deseja salvar. aperte a tecla S para informar que sim.)

  3. Agora, reinicie seu computador.

Conhecendo seu novo Logger

Pronto! Agora o ulogme já está rodando e fazendo os logs.
Se você quiser acessar as estatísticas que ele cria, precisaremos fazer apenas mais um script:

cd ~

nano ulogme_view_logs.py

Agora que o editor abriu, copie esse código para o arquivo:

#!/usr/bin/env python3
import os
import time
import webbrowser

home = os.path.expanduser('~')

os.chdir('{}/.local/ulogme/scripts/'.format(home))

os.system('/usr/bin/python3 ./export_events.py &')

time.sleep(3)

os.system('/usr/bin/python3 ./ulogme_serve.py &')

time.sleep(0.2)

webbrowser.open('http://localhost:8124')

Torne o arquivo executável:

chmod +x ulogme_view_logs.py

Terminado! Agora você já pode visualisar os logs que o uLogMe está salvando!

cd ~

./ulogme_view_logs.py

Executando esse comando o seu navegador padrão abrirá no link http://localhost:8124. Dentro de 3 segundos seu navegador deve abrir já na página do ulogme.
Agora, é só aproveitar seu novo Logger!

Bem, o post fui um pouco extenso, mas espero que tenha ajudado. qualquer dúvida, contate-me pelo telegram