Alternative für „Schlafsekunden“, die die Systemlast berücksichtigt?

Alternative für „Schlafsekunden“, die die Systemlast berücksichtigt?

Also entwickle ich meine Server-App und einige Client-Apps dafür. Nach jedem Neuaufbau starte ich meinen Server (der dazu neigt, alle Dienste für etwa 2 Sekunden zu laden) und dann starte ich meine Clients ... Das ist also, was ich in meinemSkript:

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 &

Ich frage mich, ob es in Bash Alternativen gibt sleep. Zum Beispiel mindestens 5 Sekunden warten und dann, bis die CPU-Aktivität des Prozesses Xauf 1 % gesunken ist, und dann starten, was ich brauche?

Antwort1

Möglicherweise müssen Sie einige Dinge ändern, beispielsweise die Grep-Kriterien und den CPU-Schwellenwert, aber hier sind sie:

#!/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 &

Sie können bei Bedarf auch die Schlafenszeit ändern.

verwandte Informationen