そこで私はサーバーアプリとクライアントアプリを開発しました。再構築するたびにサーバーを起動し(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 &
Bashには代替手段があるのだろうかsleep? たとえば、少なくとも 5 秒間待ってから、プロセスの CPU アクティビティがX1% に下がるまで待ってから、必要なものを起動するなど?
答え1
grep 基準や CPU しきい値など、いくつかの項目を変更する必要があるかもしれませんが、ここでは次のようにします。
#!/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 &
必要に応じて、スリープ時間を変更することもできます。


