[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
controle de uso de tempo em shell
From: |
Gustavo Adolfo Kellermann |
Subject: |
controle de uso de tempo em shell |
Date: |
Wed, 11 Jun 2003 17:48:08 -0300 |
Desculpem a mensagem meio longa, mas eu achei que esse seria um exemplo
interessante para a lista.
No calculo do tempo, eu mostro um uso do awk que para mim eh muito util.
Por exemplo, para somar o tamanho dos arquivos .sh de um diretorio:
ls -l *.sh | awk '{soma += $5}; END {print soma}'
Na minha empresa agora os funcionarios tem de reportar o tempo gasto em
cada tarefa, na forma do percentual gasto durante um dia de trabalho. Tem
gente que estah utilizando um programinha windows para marcar o tempo
gasto, mas eu preferi fazer minha versao em shell, ficou bem simples, e
funciona. A diferenca eh que para indicar que iniciei ou comecei uma
tarefa tenho de executa um comando ao inves de apertar um botao :-)
Bom, aqui vai um breve manual:
./start.sh <tarefa>
marca o inicio da tarefa.
./end.sh
marca o fim da ultima tarefa.
./calc.sh
calcula a porcentagem gasta em cada tarefa, no final do dia.
Pode ser utilizado para uma data no passado, se essa for entrada no
formato <ano><mes><dia>, como 20030609
Coloquei no mail os arquivos por nao serem muito grandes, mas eu preferia
fazer um .tgz deles. Eu posso enviar anexos para a lista, ou
disponibilizar no arquivo do grupo?
start.sh:
if [ -z "$1" ] ; then
echo "uso: $0 <tarefa>"
exit
fi
echo `date +%Y%m%d.%H%M%S\ %s` START $1 >> task_control
end.sh:
last_start=`grep START task_control | tail -1 | awk '{print $4}'`
echo `date +%Y%m%d.%H%M%S\ %s` END $last_start >> task_control
calc.sh:
if [ ! -z "$1" ] ; then
DATE=$1
else
DATE=`date +%Y%m%d`
fi
START=`grep ^$DATE task_control | head -1 | awk '{print $2}'`
END=`grep ^$DATE task_control | tail -1 | awk '{print $2}'`
if [ -z "$END" -o -z "$START" ] ; then
echo "Dados insuficientes nesta data - $DATE"
exit
fi
TOTAL=`expr $END - $START`
grep ^$DATE task_control | awk -v totalgeral=$TOTAL '
/START/ {
last=$2;
start=1;
}
/END/ {
if(start) {
somas[$4] += $2 - last;
total += $2 - last;
start = 0;
}
}
END {
print "tarefa c/ tempo livre s/ tempo livre"
for(task in somas) {
printf("%-20s%2d%%
%2d%%\n",task,(somas[task] / totalgeral) * 100, (somas[task] / total) *
100)
}
}'
--
**************************
Gustavo Adolfo Kellermann
address@hidden
Terra Networks Brasil S.A.
**************************
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- controle de uso de tempo em shell,
Gustavo Adolfo Kellermann <=