考虑系统负载的“睡眠秒数”的替代方案?

考虑系统负载的“睡眠秒数”的替代方案?

因此,我为其开发了服务器应用程序和一些客户端应用程序。每次重建后,我都会启动我的服务器(这往往会在 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 秒,直到进程上的 CPU 活动X下降到 1%,然后启动我需要的东西?

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

如果您愿意,您也可以更改睡眠时间。

相关内容