我在bash shell脚本中获得平均负载
load=`echo $(cat /proc/loadavg | awk '{print $1}')`
我知道管道到bc
load=`echo $(cat /proc/loadavg | awk '{print $1}') \> 3 | bc -l`
用于几乎所有如何将$ load作为int进行转换的示例,但是此框没有安装bc,我不允许添加它。
我试过
int=`perl -E "say $load - 0"`
我试过
int=${load%.*}
我试过
int=`printf -v int %.0f "$load"`
我希望能够做的是
if [ "$int" -gt 3.5 ]; then
如何按预期进行评估?
答案 0 :(得分:3)
您可以根据条件使用awk产生成功/失败:
# exit 0 (success) when load average greater than 3.5, so take the branch
if awk '{ exit !($1 > 3.5) }' /proc/loadavg; then
# load average was greater than 3.5
fi
不幸的是,因为"成功"在shell中为0,您必须反转条件的逻辑以使awk退出所需的状态。显然,您可以通过多种方式执行此操作,例如将>
更改为<=
。
答案 1 :(得分:3)
您不需要任何外部工具(如awk)来阅读这些内容。 maxRetention: 157680000
xFilesFactor: 0.5
aggregationMethod: average
fileSize: 2521504
Archive 0
retention: 691200
secondsPerPoint: 10
points: 69120
size: 829440
offset: 64
Archive 1
retention: 2678400
secondsPerPoint: 60
points: 44640
size: 535680
offset: 829504
Archive 2
retention: 31536000
secondsPerPoint: 600
points: 52560
size: 630720
offset: 1365184
Archive 3
retention: 157680000
secondsPerPoint: 3600
points: 43800
size: 525600
offset: 1995904
的平均负载总是格式化为两位小数,因此您可以这样做:
/proc/loadavg