【问题标题】:Shell script to display - Memory usage, Disk Usage and CPU Load?要显示的 Shell 脚本 - 内存使用情况、磁盘使用情况和 CPU 负载?
【发布时间】:2014-07-09 19:52:05
【问题描述】:

我想以以下格式显示内存使用情况、磁盘使用情况和 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 负载看起来正常吗? 0.40 是什么意思?我应该说 CPU 负载的高值是多少?

【问题讨论】:

  • 使用uptime 而不是top 来获得平均负载。
  • WRT cpu load 看看en.wikipedia.org/wiki/Load_%28computing%29 根据我的经验,我看到一些服务器负载 10-20 并且仍然响应,在其他情况下负载 3-5 挂起
  • +1,问题比答案包含更多有用的信息。

标签: linux bash shell unix awk


【解决方案1】:

尝试转义%:

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

【讨论】:

  • 是的,工作正常。非常感谢。您是在谈论使用 uptime 而不是 top 吗?这两者有什么区别?为什么你建议使用正常运行时间?只是想学点新东西。
  • @AKIWEB 为什么uptime 而不是top 运行这个time uptime time top -b n 1 你会发现正常运行时间要快得多,因为它不会检查每个进程的元数据。
  • 我明白了。如果我需要使用上面的 shell 脚本,你能举个例子吗?
  • @AKIWEB 你可以使用这个:uptime | awk '{printf "CPU Load: %.2f\n", $(NF-2)}'
  • 非常感谢。是的,它工作得很好。 CPU负载中的数字是什么意思,负载很高?现在,它显示为 0.28 还是 0.40?我如何知道哪个数字意味着 CPU 负载非常高?我已经更新了问题。
猜你喜欢
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 2013-05-01
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多