显示内存使用情况,磁盘使用情况和CPU负载的命令


16

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

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

我怎么做?


看起来很像作业。从/ proc本身或其他命令中获取所需的数据,然后使用awk,perl或bash对其进行格式化。
mikebabcock 2014年

欢迎使用Unix&Linux Stack Exchange!请始终包括您的操作系统。解决方案通常取决于所使用的操作系统。您是否正在使用Unix,Linux,BSD,OSX等?哪个版本?
terdon

谢谢大家帮助。但是,我有我的答案在这里stackoverflow.com/questions/33774260/...
穆赫辛伊纳亚特汗

Answers:


33

试试这个,它可以在我的Debian系统上工作。详细信息可能会有所不同,具体取决于操作系统使用的这些工具的实现:

#!/bin/sh
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)}' 

如果将以上内容另存为脚本并运行,您将获得(例如,来自我的系统的信息):

$ ./foo.sh 
Memory Usage: 4986/7994MB (62.37%)
Disk Usage: 23/68GB (35%)
CPU Load: 0.78

请注意,上面的脚本提供了/分区的磁盘使用情况。您没有指定想要的内容,所以我猜这就是您想要的。



@RahulPatil看起来不错,为什么不发布呢?
terdon

3
因为这只是您复制的ans。:D
Rahul Patil 2014年

1
free -m行确实给我一个错误,该百分比未正确转义。这应该是这样的:free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
simon

1
@ user1735921 请问一个问题。但是首先,谷歌如何将命令的输出存储在一个简单的变量中。然后,说明问题中要存储的内容和要测试的内容。
terdon

5

检查上方

阅读此内容,https://lwn.net/Articles/387202/

看到, 在此处输入图片说明

您可以通过应用查看磁盘/内存/ CPU的负载:

在此处输入图片说明

例如,磁盘使用情况:

在此处输入图片说明

/var/log/atop/每天以二进制格式存储目录中的统计信息。您可以阅读手册页,必须有一种提取有用信息的方法。


2

没有命令可以完全按照您的特定格式显示,但是下面的命令提供了一些基本值,可以围绕这些基本值构建脚本,或者也可以从/ proc和/ sys中读取值。

free -快速概述

vmstat 1 显示系统性能I / O统计信息

top 动态

htop 类似于顶部


1
抛出我最喜欢的iostat。
mikebabcock 2014年

0

我认为您需要nagios帮助,因为已经完成了nagios的所有这些插件/程序,并且无需安装nagios即可下载和测试。



0

这是我获取CPU和RAM使用率的代码:

### 1. get total average CPU usage for the past minute
avg_cpu_use=$(uptime)
# a. split response
IFS=',' read -ra avg_cpu_use_arr <<< "$avg_cpu_use"
# b. find cpu usage
avg_cpu_use=""
for i in "${avg_cpu_use_arr[@]}"; do :
    if [[ $i == *"load average"* ]]; then
        avg_cpu_use=$i
        break       
    fi
done
# c. create response
avg_cpu_use=$(echo ${avg_cpu_use:16})   # Remove "  load average: "
if [[ -z "${avg_cpu_use// }" ]]; then
    avg_cpu_use="CPU: N/A%%"
    exit -1
else
    avg_cpu_use="CPU: ${avg_cpu_use}%%"
fi

### 2. get RAM usage
ram_use=$(free -m)
# a. split response by new lines
IFS=$'\n' read -rd '' -a ram_use_arr <<< "$ram_use"
# b. remove extra spaces
ram_use="${ram_use_arr[1]}"
ram_use=$(echo "$ram_use" | tr -s " ")
# c. split response by spaces
IFS=' ' read -ra ram_use_arr <<< "$ram_use"
# d. get variables
total_ram="${ram_use_arr[1]}"
ram_use="${ram_use_arr[2]}"
# e. create response
ram_use="RAM: ${ram_use}/${total_ram} MB"

echo $avg_cpu_use
echo $ram_use

-2

您应该能够使用以下命令显示内存使用情况,磁盘使用情况和CPU负载:

(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.