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.


