Alternativa para 'segundos de sono' que leva em conta a carga do sistema?

1

Portanto, desenvolvo meu aplicativo de servidor e alguns aplicativos clientes para ele. Depois de cada reconstrução eu inicio meu servidor (que tende a carregar qup todos os serviços por algo como 2 segundos) e então eu começo meus clientes ... Então, ele é o que eu tenho no meu script :

cd $RUN_DIR
nohup ./CloudServer >& /dev/null &
sleep 5
nohup ./CloudClient --server=localhost --username=$ROBOT1_NAME --robot >& /dev/null &
nohup ./CloudClient --server=localhost --username=$ROBOT2_NAME --robot >& /dev/null &

Gostaria de saber se existem alternativas para sleep no Bash? Como esperar pelo menos 5 segundos e, em seguida, até que a ativação da CPU no processo X caia para 1% e, em seguida, ative o que eu preciso?

    
por myWallJSON 15.03.2012 / 15:51

1 resposta

2

Talvez seja necessário alterar algumas coisas, como os critérios do grep e o limite da CPU, mas aqui está:

#!/bin/bash
cd $RUN_DIR
nohup ./CloudServer >& /dev/null &
PID='ps aux |grep $RUN_DIR/CloudServer|grep -v grep| head -n 1 |awk '{print $2}''

while [ 'top -n 1 -b -p $PID | grep $PID |awk '{print $9"/1"}' |bc' -gt 1 ]
do
        sleep 2
        echo Server still starting up ...
done
echo Server is now Idle
nohup ./CloudClient --server=localhost --username=$ROBOT1_NAME --robot >& /dev/null &
nohup ./CloudClient --server=localhost --username=$ROBOT2_NAME --robot >& /dev/null &

Você também pode alterar o tempo de sono, se desejar.

    
por 15.03.2012 / 16:50