Bash逻辑在启动免费进程之前检查内存和服务器负载

我正试图执行以下伪algorithm:

while true do if there is 1G of free memory && server load below 60% ./some-script & break else sleep 10 fi done 

我需要帮助(build议,实施注意事项)与实施:

  1. 检查是否有1G的空闲内存
  2. 检查服务器负载是否小于60%

您需要对可用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 

只需使用batch(1) ,即at包的一部分。 它在负载低时运行参数。