要显示的Shell脚本 - 内存使用情况,磁盘使用情况和CPU负载?

时间:2014-07-09 19:52:06

标签: linux bash shell unix awk

我希望以下列格式显示内存使用情况,磁盘使用情况和CPU负载:

Memory Usage: 33/512MB (6%)    
Disk usage: 4.2/20GB (23%) 
CPU Load: 0.01

所以我开始使用下面的脚本来做到这一点但不知何故它给了我一个错误

#!/bin/bash

free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%)\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'
top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}' 

以下是我得到的错误 -

awk: run time error: not enough arguments passed to printf("Memory Usage: %s/%sMB (%.2f%)
")
        FILENAME="-" FNR=2 NR=2

我正在运行ubuntu 12.04。知道什么是错的吗?

更新: -

运行我的下面的shell脚本 -

#!/bin/bash

free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'
top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}' 

我得到了以下输出 -

Memory Usage: 128504/128896MB (99.70%)
Disk Usage: 3/48GB (8%)
CPU Load: 0.40

CPU Load是否正常? 0.40是什么意思?我应该说什么数字对CPU负载来说会很高?

1 个答案:

答案 0 :(得分:3)

尝试转义%

printf "Memory Usage: %s/%sMB (%.2f%%)\n"