考慮系統負載的「睡眠秒數」的替代方案?

考慮系統負載的「睡眠秒數」的替代方案?

因此,我為其開發了伺服器應用程式和一些客戶端應用程式。每次重建後,我都會啟動我的伺服器(這往往會在 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 &

如果您願意,您也可以更改睡眠時間。

相關內容