Medindo a hora de um comando interativo chamado de um script

0

Supondo que eu queira rastrear os horários que gasto editando um conjunto de arquivos e registrando-os em um arquivo, como eu poderia fazer a partir da linha de comando usando o comando time :

time vim test.txt 

Eu obtenho

real    0m8.149s
user    0m0.056s
sys     0m0.008s

Bem. Agora, se eu quiser acrescentar sua saída a um arquivo de log,

time vim test.txt >> my.log

Bem, é claro que eu ficaria mais elaborado para me dar mais informações, mas eu não ultrapasse o primeiro passo, o terminal apenas trava com o seguinte aviso:

Vim: Warning: Output is not to a terminal

O redirecionamento interfere no vim que precisa do terminal. Qual seria uma boa solução aqui?

Editar: uma solução alternativa pode ser a seguinte:

time gnome-terminal -x vim test.txt >> my.log

Que abre uma nova janela de terminal na qual o vim é executado. Eu preferiria ficar na mesma janela, mas também poderia viver com essa solução alternativa.

Edit: Também não funcionou, parecia fazer em algum teste, em algum outro contexto, não medindo o tempo usado. No meu script agora eu fiz algo assim:

/usr/bin/time -o tmpfile vim test.txt 
echo some stuff 'cat tmpfile' some more stuff >>my.log
rm tmpfile

Parece funcionar.

Edit: Funciona apenas enquanto não houver dois processos usando o mesmo tmpfile . Para evitar que alguém possa usar o pid do script sendo executado como parte do nome do arquivo temporário:

/usr/bin/time -o $$.tmp vim test.txt 
echo some stuff 'cat $$.tmp' some more stuff >>my.log
rm $$.tmp
    
por muk.li 27.07.2017 / 17:43

1 resposta

1

Qual time você está usando? O Bash embutido ou aquele em /usr/bin/time ? Se você usar /usr/bin/time (e ler man time ), descobrirá que pode registrar a saída em um arquivo, formatar a saída da maneira que desejar, .... O Bash incorporado em time é muito menos capaz.

    
por waltinator 27.07.2017 / 19:31