[BASH] Matar proceso según la memoria libre

Iniciado por ymk369, Agosto 16, 2015, 12:01:36 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 16, 2015, 12:01:36 AM Ultima modificación: Agosto 16, 2015, 04:43:38 PM por Expermicid
Buen día a todos,

Estoy haciendo un script para matar un proceso dependiendo de la memoria libre el código es el siguiente:


Código: bash
#!/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



Pero... ¿por que no mejor en lugar de declarar la variable para luego matar  kill -9 $var2, mejor ejecutar el comando ps aux | grep '/opt/skype/skype' | grep -v grep | awk '{print $2}' | xargs kill que mataría el proceso directamente?.

Si ese fuera el caso mejor usaría pkill skype que mataría dicho proceso, pero lo que yo quiero saber o supongo que es el problema es algo así como el manejo de números enteros, por que al hacer una condición ejemplo: $var1 > 5000 no hay resultado, supongo que estoy comparando diferentes tipos de valores, ¿que puedo hacer? ¿como puedo pasar entonces estos valores a valores enteros?.

Hacer notar que me estoy iniciando en Bash

De antemano agradezco su ayuda, saludos.