![Bash: 사용된 메모리 기능을 기반으로 프로세스 종료](https://linux55.com/image/71432/Bash%3A%20%EC%82%AC%EC%9A%A9%EB%90%9C%20%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EA%B8%B0%EB%8A%A5%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EC%A2%85%EB%A3%8C.png)
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