Bash:根据使用的内存函数杀死进程

Bash:根据使用的内存函数杀死进程

我编写了这个脚本来关闭进程,但我无法将awk结果 ( var1) 与 Integer:进行比较var1 -gt 5000

我的脚本:

#!/bin/bash

var1= free -m |awk 'NR == 2'| awk '{print $3}'
var2= ps aux | grep '/opt/skype/skype' | grep -v grep | awk '{print $2}'

while true;
do
     if [ $var1 -gt 5000 ]; then
         echo "La memoria se ha excedido cerrando porcesos"
         kill -9 $var2
     break
     else
     echo "La memoria aun es estable $var1"
     fi
done

这可能是 bash 中的转换问题吗?

答案1

您可以在 bash 和 ksh 中转换变量(使用declare -i varortypeset -i var表示整数),但我认为这不是您的问题。

var1当正常运行命令时,以下内容将设置为空。

var1= free -m |awk 'NR == 2'| awk '{print $3}'

如果您希望将 free 和 awk 的输出设置为 var1,则上面的内容应为:

var1=$( free -m |awk 'NR == 2'| awk '{print $3}' )

答案2

谢谢 DarkHeart,我的脚本有效。

这是生成的代码:

#!/bin/bash

while true; do   

    var1=$( free -m |awk 'NR == 2'| awk '{print $3}' )
    var2=$( ps aux | grep '/opt/skype/skype' | grep -v grep | awk '{print $2}' )

    if [ $var1 -gt 5460 ]; then
         echo "La memoria se ha excedido cerrando porcesos"
         kill -9 $var2
         break
    else
         echo "La memoria aun es estable $var1"
    fi

    sleep 1

done

相关内容