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