Итак, я разрабатываю свое серверное приложение и несколько клиентских приложений для него. После каждой перестройки я запускаю свой сервер (который имеет тенденцию загружать все службы qup в течение примерно 2 секунд), а затем запускаю своих клиентов... Так что это то, что у меня есть в моемсценарий:
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 &
Интересно, есть ли альтернативы sleepв Bash? Например, подождать хотя бы 5 секунд, пока активность процессора на процессе Xне снизится до 1%, а затем запустить то, что мне нужно?
решение1
Возможно, вам придется изменить некоторые параметры, например критерии grep и пороговое значение ЦП, но вот что нужно сделать:
#!/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 &
При желании вы также можете изменить время сна.


