Pelo menos no meu sistema (Debian), não é assim que ulimit
funciona. Ele não executará o comando após o limite, você apenas define o limite e executa o comando:
$ ulimit -t 1800
$ ./bsolo3.0.17 test.opb
De qualquer forma, para saber os horários, você pode usar time
:
$ time ls > /dev/null
real 0m0.004s
user 0m0.000s
sys 0m0.000s
Então, se o seu comando está rodando em algum tipo de loop, você pode capturar os tempos em um arquivo como este:
ulimit -t 1800
for i in {1..10}; do
(time ./bsolo3.0.17 test.opb) 2>> times.log
done
O subshell (os parênteses) é necessário para poder capturar a saída de time
que imprime em STDERR. Usar time foo 2> log
não funcionará porque isso só redirecionará o STDERR do comando foo
e não de time
.
Se tudo o que você quer é o número de vezes que o comando terminou dentro do tempo alocado, faça o seguinte:
ulimit -t 1800
for i in {1..10}; do
./bsolo3.0.17 test.opb && let count++
done
echo "Job finished in time $count times."