我正在尝试实现以下伪算法:
while true
do
if there is 1G of free memory && server load below 60%
./some-script &
break
else
sleep 10
fi
done
我需要帮助(建议、实施说明)来实施:
- 检查是否有 1G 可用内存
- 检查服务器负载是否低于 60%
答案1
您需要与可用 RAM 进行比较,因此我们将从 /proc/meminfo 中获取该详细信息。
通过做一些魔法来将负载表示为百分比(直接从https://stackoverflow.com/a/9229692/1287561)
while true
do
if [ `cat /proc/meminfo |grep MemFree|awk '{ print $2 }'` -lt 1048576 && `top -bn1 | grep "Cpu(s)" | \
sed "s/.*, *\([0-9.]*\)%\id.*/\1/" | \
awk '{print 100 - $1}'` -lt 60 ]
./some-script &
break
else
sleep 10
fi
done
答案2
只需使用包batch(1)
的一部分at
。它在负载较低时运行参数。