[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Horas em segundos
From: |
opa |
Subject: |
Re: [shell-script] Horas em segundos |
Date: |
Fri, 23 Apr 2004 22:25:14 -0300 hrN |
Marco, lembrei agora:
Fiz há um tempo uma rotina para medir o intervalo de tempo entre
dois pontos de um script em execução. Faz tempo que não uso acho
que por isso escapou. Mas como ele mostra o intervalo em hh:mm:ss
acho que vai ser ótimo para você dar um "look".
root:~# ls -l /sh/time
-rw-r--r-- 1 root root 432 Jun 21 2003 /sh/time
Veja que não está executável porque é para ser rodado no próprio
shell a ser mensurado.
root:~# cat /sh/time
# Escreve a diferenca de tempo entre a chamada par e a impar
# Uso ". /sh/time ; (operacoes...) ; . /sh/time" [ $1=s saida em segundos ]
if [ "$TimE" = "" ];then
TimE=`date "+%s"`
else
TimE=$((`date "+%s"`-$TimE))
TimEh=$(($TimE/3600))
if [ "$1" = "s" ];then
echo $TimE
else
TimE=$(($TimE-($TimEh*3600)))
TimEm=$(($TimE/60))
TimE=$(($TimE-$TimEm*60))
echo $TimEh"h":$TimEm"m":$TimE"s"
fi
unset TimE TimEh TimEm
fi
root:~#
É o mesmo esquema do que te passei abaixo.
Vide o resultado em operação:
root:~# . time
Dei um tempo ...
root:~# . time
0h:1m:56s
root:~#
Espero que ajude!
----------------------------------------------------------------
>From: Claudio <address@hidden>
>Date: Fri, 23 Apr 2004 19:11:22 -0300
>
>Voce pode converter as horas assim:
>
>converta a data inicial assim:
>
>date -d 'Fri Apr 23 18:33:00' +%s
>
>but3k4@slack:~$ date -d 'Fri Apr 23 18:33:00' +%s
>1082755980
>
>converta agora a data final:
>
>but3k4@slack:~$ date -d 'Fri Apr 23 18:53:00' +%s
>1082757180
>
>Pegue o resultado da data final e diminua pela data inicial:
>
>but3k4@slack:~$ echo 1082757180-1082755980 | bc
>1200
>
>depois divida este valor por 60:
>
>but3k4@slack:~$ echo 1200/60 | bc
>20
>
>pronto, agora voce tem o valor em minutos de quando tempo o cara ficou
>logado. Dae em diante eh so fazer o script.
>
>qualquer coisa, eu te ajudo a fazer.
>
>:D
>
>
>
>opa escreveu:
>
>>Acho que a string para o date não pode ser em segundos???
>>
>>Lembro-me vagamente que já senti necessidade de algo parecido e
>>não pude contar com o "date".
>>
>>Talvez isto possa ajudar!?
>>
>>var_percorrido=3009
>>var_percorrido_human=$[var_percorrido/60]
>>residuo=0$[$var_percorrido-$var_percorrido_human*60]
>>var_percorrido_human=$var_percorrido_human:${residuo#${residuo%??}}
>>echo var_percorrido=$var_percorrido
>>echo var_percorrido_human=$var_percorrido_human
>>
>>
>>----------------------------------------------------------------
>>
>>
>>>From: Marco Sinhoreli <address@hidden>
>>>Date: Fri, 23 Apr 2004 11:21:52 -0300
>>>
>>>Opa :-)
>>>
>>>Consegui com o comando date transformar as horas atuais em segundos:
>>>var_inicio=$(date +%s) # Esta var eh setada no inicio do questionário
>>>
>>>Em cada questão estou verificando o tempo percorrido...
>>>var_percorrido=$[ `date +%s` - $var_inicio ]
>>>
>>>.... e o restante para a concusão considerando o teto em 1 hora...
>>>var_termino=$[ 3600 - $var_percorrido ]
>>>
>>>....finalizando se var_termino estrapolou
>>>[ $var_termino -le 0 ] && comandos...
>>>
>>>
>>>Ai me veio outro problema
>>>Transformar $var_ver e $var_termino em MM:SS
>>>Tentei isso e não resolveu :-(
>>>
>>>var_percorrido_human=$(date -d "00:$var_percorrido" "+%T")
>>>var_termino_human=$(date -d "00:$var_termino" "+%T")
>>>
>>>Em Sex, 2004-04-23 às 10:47, opa escreveu:
>>>
>>>
>>>>Dispensando o cron, vou passar mais ou menos uma filosofia que
>>>>me parece apropriada.
>>>>
>>>>Quando seu script de avaliação inicia ele pode chamar outro em
>>>>segundo plano que recebe o PID do primeiro e salva a hora em
>>>>uma variável. Ao encerrar o tempo poderia gravar a hora em um
>>>>arquivo de log do candidato, ou geral, se você tiver interesse.
>>>>
>>>>O script em segundo plano, com um simples sleep de 55m poderia
>>>>avisar o candidato em seu terminal, que restam 5 minutos para
>>>>o final.
>>>>
>>>>Poderia tentar atualizar o tempo em algum ponto da tela
>>>>minuto a minuto com sleeps, mas daí já acho isso pouco técnico e
>>>>seria melhor outra forma de faze-lo, que desconheço.
>>>>
>>>>Após um novo sleep, agora de 5m, uma mensagem é enviada para a
>>>>tela e o script do candidato recebe um kill. Daí você poderia
>>>>passar para um log tudo o que desejar, antes desse script de
>>>>segundo plano terminar.
>>>>
>>>>
>>>>
>>>>----------------------------------------------------------------
>>>>
>>>>
>>>>>From: Marco Sinhoreli <address@hidden>
>>>>>Date: Fri, 23 Apr 2004 09:20:03 -0300
>>>>>
>>>>>Olá pessoal,
>>>>>
>>>>>Tenho um shell script para uma avaliação de conhecimento em inform
>>>>>
>>>>>
>>>ática
>>>
>>>
>>>>>de alguns alunos aqui do Centro Público para serem contratados como
>>>>>monitores nas Escolas Municipais.
>>>>>
>>>>>Esta avaliação será aplicada sendo que o aluno tem no máximo 1 h
>>>>>
>>>>>
>>>ora para
>>>
>>>
>>>>>a sua conclusão. Eu gostaria de inserir isso no shell script da seguin
>>>>>
>>>>>
>>>te
>>>
>>>
>>>>>maneira:
>>>>>
>>>>>Localizar a hora inicial em segundos.
>>>>>Localizar a hora durante o percurso da avaliação para informar tempo
>>>>>percorrido, tempo para finalização e se foi alcançado o teto máx
>>>>>
>>>>>
>>>imo
>>>
>>>
>>>>>permitido chamar uma função avisando sobre o termino da avaliaçã
>>>>>
>>>>>
>>>o.
>>>
>>>
>>>>>ps:
>>>>>Pontos interessantes neste modelo de avaliação:
>>>>>É todo feito em shell script com o uso do Xdialog e não existe a
>>>>>possibilidade de rodar outros aplicatívos (passiveis da famosa cola :-
>>>>>
>>>>>
>>>)
>>>
>>>
>>>>>no ambiente gráfico pois no momento do login pelo GDM o aluno selecion
>>>>>
>>>>>
>>>a
>>>
>>>
>>>>>como gerenciador de janelas o aplicatívo de avaliação e com as dic
>>>>>
>>>>>
>>>as de
>>>
>>>
>>>>>ontem as questóes nunca (ou quase nunca) são na mesma ordem.
>>>>>
>>>>>[]s
>>>>>
>>>>>Marco Sinhoreli
>>>>>
>>>>>
>>
>>
>>
>>
>>---------------------------------------------------------------------
>>Esta lista não admite a abordagem de outras liguagens de programação, como
>>perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
>>aviso.
>>---------------------------------------------------------------------
>>Sair da lista: address@hidden
>>---------------------------------------------------------------------
>>Esta lista é moderada de acordo com o previsto em
>>http://www.listas-discussao.cjb.net
>>---------------------------------------------------------------------
>>
>>Links do Yahoo! Grupos
>>Para visitar o site do seu grupo, acesse:
>> http://br.groups.yahoo.com/group/shell-script/
>>
>>Para sair deste grupo, envie um e-mail para:
>> address@hidden
>>
>>O uso que você faz do Yahoo! Grupos está sujeito aos:
>> http://br.yahoo.com/info/utos.html
>>
>>
>>
>>
>>
>
>
>
>---------------------------------------------------------------------
>Esta lista não admite a abordagem de outras liguagens de programação, como
>perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
>aviso.
>---------------------------------------------------------------------
>Sair da lista: address@hidden
>---------------------------------------------------------------------
>Esta lista é moderada de acordo com o previsto em
>http://www.listas-discussao.cjb.net
>---------------------------------------------------------------------
>
>Links do Yahoo! Grupos
>Para visitar o site do seu grupo, acesse:
>http://br.groups.yahoo.com/group/shell-script/
>
>Para sair deste grupo, envie um e-mail para:
>address@hidden
>
>O uso que você faz do Yahoo! Grupos está sujeito aos:
>http://br.yahoo.com/info/utos.html
>