以下代码应检查用户的内存,如果大于1000,则打印消息 我一直得到错误第4行:impala:命令未找到
#!/bin/bash
while [ true ] ;do
used= `ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i"
"int(a[i]/1024+0.5);}' | grep user`
if [[ $used > 1000 ]]; then
echo "user memory is $used"
fi
sleep 5
done
我尝试过使用= ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);} | grep user'
并使用= 'ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | grep user'
我需要对此有新的认识。请帮忙。
答案 0 :(得分:1)
在bash中,如上所述[ here ],在等号周围放置空格会导致错误,所以正确的格式是
variable_name=value;
此外,您可以更改
while [ true ]
到
while true
修改强>
如果used
的格式为impala 600
,而您最后只对该号码感兴趣,那么您可以
used="${used##* }"
#Do this just after the your first command.
最后做
#use -gt for integer comparisons and > for string comparisons
if ! [ -t $used ] && [ $used -gt 1000 ]
then
echo "user memory is $used"
fi
注意:虽然解决了脚本中的语法错误,但无法保证程序逻辑正确