Bash: 사용된 메모리 기능을 기반으로 프로세스 종료

Bash: 사용된 메모리 기능을 기반으로 프로세스 종료

awk프로세스를 종료하기 위해 이 스크립트를 작성했지만 결과( )를 Integer와 var1비교할 수 없습니다 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

declare -i varbash 및 ksh(정수 또는 정수 사용)에서 변수를 변환할 수 있지만 typeset -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

관련 정보