Como criar um script para executar aplicativos por 1 segundo?

1

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?

    
por Tom Brito 29.01.2013 / 13:57

3 respostas

2

Acho que você quer usar timeout , por exemplo

timeout 1s myrunner $app
    
por 29.01.2013 / 14:03
1

$! é 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=$?
    
por 29.01.2013 / 14:03
1

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).

    
por 30.01.2013 / 01:33