Use os comandos time, timeout e ulimit corretamente

3

Estou executando um comando no CentOS e, ao mesmo tempo, quero fazer duas coisas:

  1. escreva o tempo de execução do comando em um arquivo e
  2. define um limite de tempo que interrompe o comando

Eu implementei o primeiro com sucesso. Veja como está:

(time ./minisat+_64-bit_static opb_clauses.txt ) 2>>../measures.txt

Como você pode ver, usei o comando time para contar o tempo necessário pelo comando e encaminhei os resultados de tempo para um arquivo measures.txt . Aqui está uma amostra de measures.txt :

real    0m0.002s
user    0m0.000s
sys 0m0.000s

Estou tentando adicionar a segunda coisa assim:

(timeout 1s time ./minisat+_64-bit_static opb_clauses.txt ) 2>>../measures.txt

Os resultados desse comando bagunçaram meu arquivo e retornaram algo assim:

0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 6368maxresident)k
0inputs+0outputs (0major+440minor)pagefaults 0swaps

Como você pode ver, os resultados do "tempo real" desapareceram e os outros resultados estão em um formato diferente. Como posso separar os resultados dos comandos time e timeout ?

EDIT: Um segundo pensamento é usar o comando ulimit em vez de tempo limite.Eu tentei a mesma coisa, mas com ulimit:

 (ulimit -t 10 time ./minisat+_64-bit_static opb_clauses.txt ) 2>>../measures.txt

mas desta vez eu não tenho nenhum resultado escrito em medidas.txt

    
por Dchris 12.07.2013 / 17:22

1 resposta

2

Deve haver algo no seu ambiente, porque quando tento o mesmo exemplo, obtenho os resultados esperados. Por exemplo:

# command #1
$ (time echo "hi") 2>> measures.txt
hi

$ cat measures.txt 

real    0m0.000s
user    0m0.000s
sys 0m0.000s

# command #2
$ (timeout 1s time echo "hi") 2>> measures.txt
hi

$ cat measures.txt 

real    0m0.000s
user    0m0.000s
sys 0m0.000s
0.00user 0.00system 0:00.05elapsed 0%CPU (0avgtext+0avgdata 552maxresident)k
56inputs+0outputs (1major+173minor)pagefaults 0swaps

Em vez de estruturar seu comando como duas chamadas separadas, por que não?

(
 time ./minisat+_64-bit_static opb_clauses.txt
 timeout 1s time ./minisat+_64-bit_static opb_clauses.txt
) 2>>../measures.txt
    
por 12.07.2013 / 17:44