システム負荷を考慮した「睡眠時間」の代替は何ですか?

システム負荷を考慮した「睡眠時間」の代替は何ですか?

だから私はサーバーアプリケーションとそのためのいくつかのクライアントアプリケーションを開発しました。再構築するたびにサーバーを起動し(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 &

sleepBashの他のオプションがあるかどうか疑問に思います。プロセスのCPUアクティビティがX1%に低下するまで5秒以上待ってから、必要な作業を開始するのと同じです。

答え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 &

必要に応じて睡眠時間を変更することもできます。

関連情報