Cálculo do tempo de trabalho com base no tempo de atividade do sistema

2

Conheço várias ferramentas que permitem acompanhar o tempo gasto em diferentes tarefas / projetos.

Existe alguma ferramenta existente para um acompanhamento muito simplificado do tempo de trabalho?

Cenário:

Sou um funcionário, venha ao escritório, ligue meu laptop diretamente. Eu tenho principalmente cerca de 1 hora de almoço, mas às vezes menos, às vezes mais.

Por volta das 18:00 eu quero digitar um comando no console (ou a interface gráfica simples também está bem, claro) que me diz:

"1 hora sobrecarregada. Vá para casa agora! (chegou às 8:00, hora do almoço padrão)."

Talvez possa haver algum parâmetro

mytool -lunch 2

"Falta 0 horas para ir para casa agora! (chegou às 8:00, 2 horas de intervalo para almoço)."

Existe alguma coisa simples como essa já?

Deve ser executado no Linux, COmmandline, talvez apenas em um script bash ou python.

EDIT: Solução do Akira - obrigado!

$ mytool 2 | figlet
               _                            
  __ _  ___   | |__   ___  _ __ ___   ___   
 / _' |/ _ \  | '_ \ / _ \| '_ ' _ \ / _ \  
| (_| | (_) | | | | | (_) | | | | | |  __/_ 
 \__, |\___/  |_| |_|\___/|_| |_| |_|\___(_)
 |___/                                      
                        _              __________  __   
  _____   _____ _ __ __| |_   _  ___  |___ /___ / / /_  
 / _ \ \ / / _ \ '__/ _' | | | |/ _ \   |_ \ |_ \| '_ \ 
| (_) \ V /  __/ | | (_| | |_| |  __/  ___) |__) | (_) |
 \___/ \_/ \___|_|  \__,_|\__,_|\___| |____/____/ \___/ 

                              _       
 ___  ___  ___ ___  _ __   __| |___   
/ __|/ _ \/ __/ _ \| '_ \ / _' / __|  
\__ \  __/ (_| (_) | | | | (_| \__ \_ 
|___/\___|\___\___/|_| |_|\__,_|___(_)

    
por Alex 28.07.2010 / 13:37

1 resposta

3

bash (coloque no seu ~/.bashrc ):

function mytool() {

    # ${1-0} means: take the first argument or assume 0 if 
    # no argument was given

    MAX="$(( (8 + ${1-0}) * 3600))" # $1 carries additional hours
    UP='cat /proc/uptime | sed 's/\..*//''

    if (( $UP > $MAX ))
    then
        echo "go home. overdue $(( $UP - $MAX )) seconds."
    fi
}

apenas chame como mytool 2 .

ou .. awk (apenas por diversão):

awk -v lunch=2 'BEGIN { max=(8 + lunch) * 3600;} { if ($1 > $max) print "overdue " ($1 - max) / 3600.0 " hours"; }' /proc/uptime
    
por 28.07.2010 / 14:15