Acho que você quer usar timeout
, por exemplo
timeout 1s myrunner $app
Eu tenho o seguinte script para executar alguns aplicativos em uma pasta por um segundo cada (para teste):
#!/bin/bash
for app in ./*.app
do
myrunner $app &
sleep 1
killall -9 myrunner
done
Mas eu acho que usar "killall -9" não é a melhor maneira de fazer isso, existe uma melhor?
$!
é o pid do último processo em segundo plano, então:
do
myrunner $app &
pid=$!
sleep 1
kill -9 $pid
done
Você não precisa atribuí-lo a uma variável intermediária, pois sleep
não é baseado em segundo plano, ou seja, você poderia usar apenas kill -9 $!
.
Variável relacionada útil é $?
do status de saída do último comando, o que permite que o WRT seja um processo em segundo plano:
somecommand & wait $!
status=$?
Você está dando aos seus participantes 1s de tempo de wallclock , não tempo de execução . Isso pode fazer uma grande diferença.
Por que executá-los apenas por um tempo fixo e não incluir alguns critérios de acabamento? Desta forma, não há garantia real de que o que quer que fosse testado realmente foi feito (especialmente se testes mais longos entrarem no set mais tarde).
Tags bash shell-script