시스템 부하를 고려한 "수면 시간"의 대안은 무엇입니까?

시스템 부하를 고려한 "수면 시간"의 대안은 무엇입니까?

그래서 저는 서버 애플리케이션과 이를 위한 일부 클라이언트 애플리케이션을 개발했습니다. 재구축할 때마다 서버를 시작하고(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 &

원하는 경우 수면 시간을 변경할 수도 있습니다.

관련 정보