por favor, escreva uma meta que você deseja alcançar. para medir o tempo de trabalho do script, use o timecomando (time ./script.sh), para imprimir o horário atual, use o datecomando e assim por diante.
Você pode usar o timecomando interno do Linux . Na página do manual:
time COMMAND [argumentos]
time determina quais informações serão exibidas sobre os recursos usados pelo COMMAND a partir da string FORMAT. Se nenhum formato for especificado na linha de comandos, mas a variável de ambiente TIME estiver configurada, seu valor será usado como o formato.
Sei que essa é uma pergunta bastante antiga, mas é dessa maneira que faço para qualquer coisa quando quero / preciso saber quanto tempo levou para ser executado.
O Bash possui um timer de segundos embutido na forma de uma variável interna chamada SECONDS(consulte: aqui para outras variáveis internas)
Coloque SECONDS=0antes do que você está verificando o tempo de execução. Ele precisa estar atrás de qualquer entrada do usuário para obter um bom resultado; portanto, se você estiver solicitando informações, coloque-a após o (s) prompt (s).
Em seguida, coloque isso no final do que você está verificando:
if(( $SECONDS >3600));then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"elif(( $SECONDS >60));then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"else
echo "Completed in $SECONDS seconds"fi
Se você deseja apenas saber o tempo em segundos, pode simplificar o acima para:
echo "Completed in $SECONDS seconds"
Como um exemplo:
read -rp "What's your name? ""name"
SECONDS=0
echo "Hello, $name"if(( $SECONDS >3600));then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"elif(( $SECONDS >60));then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"else
echo "Completed in $SECONDS seconds"fi
Um atalho para aqueles que não querem um momento tão elaborada formatação: date +%T -d "1/1 + $SECONDS sec"(limitada a menos de 24 horas, mas você pode adaptar para adicionar dias também)
time
comando (time ./script.sh), para imprimir o horário atual, use odate
comando e assim por diante.time yourprogram.sh
:, que Marius Cotofana explicouRespostas:
Se você quer a duração em segundos, no topo use
e no final
fonte
Você pode usar o
time
comando interno do Linux . Na página do manual:Para cronometrar o
cleanup.sh
script, use:fonte
time
você está usando. hackernoon.com/...Sei que essa é uma pergunta bastante antiga, mas é dessa maneira que faço para qualquer coisa quando quero / preciso saber quanto tempo levou para ser executado.
O Bash possui um timer de segundos embutido na forma de uma variável interna chamada
SECONDS
(consulte: aqui para outras variáveis internas)Coloque
SECONDS=0
antes do que você está verificando o tempo de execução. Ele precisa estar atrás de qualquer entrada do usuário para obter um bom resultado; portanto, se você estiver solicitando informações, coloque-a após o (s) prompt (s).Em seguida, coloque isso no final do que você está verificando:
Se você deseja apenas saber o tempo em segundos, pode simplificar o acima para:
Como um exemplo:
fonte
date +%T -d "1/1 + $SECONDS sec"
(limitada a menos de 24 horas, mas você pode adaptar para adicionar dias também)fonte
@anask faça uma solução inteligente para esta resposta, só recomendo usar o nativo
$SECONDS
para criar uma novaO objetivo da
printf
divisão e é converter os segundos decorridos na unidade correspondente Horas, Mins, Segs, respectivos.fonte