Usando time
, consegui a parte do tempo de execução de um script que desejo, mas preciso dividir por um número (30). Como posso fazer isso?
....| awk '/^user/ {interest=($2)/(30);print "Time user divide by 30: " interest }'
Em $2 tenho o resultado 0m4.968s e quero dividir por 30 e imprimir.
Responder1
Essa saída 0m4.968s
se parece com o formato padrão do builtin do Bash time
. Para fazer cálculos significativos, os minutos teriam que ser convertidos em segundos. Mas é mais fácil apenas alterar o formato de saída. Se nos preocuparmos apenas com o tempo do usuário, a configuração TIMEFORMAT=%U
deverá fornecer exatamente isso, em segundos.
$ TIMEFORMAT=%U
$ time somecommand
4.968
Embora canalizar a saída do builtin time
seja um pouco estranho, já que ele deseja cronometrar todo o pipeline, mas isso deve servir:
$ (time somecommand ) 2>&1 | awk '{print $1 / 30}'
0.1656
Ou se tivermos que analisar a hora no formato original, com minutos separados de segundos, talvez algo assim:
$ echo "user 0m4.968s" |
awk '/user/ {split($2, a, "m"); secs = a[1]*60 + a[2]; print secs / 30}'
0.1656