
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 var
bash 및 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