web-dev-qa-db-fra.com

Commande pour afficher l'utilisation de la mémoire, l'utilisation du disque et la charge du processeur

Je souhaite afficher l'utilisation de la mémoire, l'utilisation du disque et la charge du processeur dans le format suivant:

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

Comment je fais ça?

17
Prem

Essayez ceci, cela fonctionne sur mon système Debian. Les détails peuvent varier en fonction de la mise en œuvre de ces outils que votre système d'exploitation utilise:

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

Si vous enregistrez ce qui précède en tant que script et l'exécutez, vous obtiendrez (exemple de mon système):

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

Notez que le script ci-dessus donne l'utilisation du disque pour le / cloison. Vous n'avez pas précisé ce que vous vouliez donc je suppose que c'est ce que vous recherchez.

35
terdon

Cochez au sommet .

Lisez ceci, https://lwn.net/Articles/387202/

Voir, enter image description here

Vous pouvez voir la charge de disque/mémoire/cpu par les applications:

enter image description here

Par exemple, l'utilisation du disque:

enter image description here

au sommet des statistiques rassemblées dans le répertoire /var/log/atop/ au format binaire par jour. Vous pouvez lire une page de manuel, il doit y avoir un moyen d'extraire des informations utiles.

5
user2496

Il n'y a pas de commande pour afficher exactement dans votre format particulier, mais ce qui suit fournit certaines des valeurs de base, sur lesquelles on pourrait construire un script, comme alternative, il est également possible de lire les valeurs de/proc et/sys.

free - aperçu rapide

vmstat 1 affiche les statistiques d'E/S des performances du système

top dynamique

htop similaire au top

2
X Tian

Voici mon code pour obtenir le CPU et RAM utilisation:

### 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
0
xinthose

Si vous utilisez Solaris, vérifiez ceci: showcpucount

Cela vous donnera une idée de la procédure à suivre pour écrire votre code.

0
vikkp

Je pense que vous avez besoin de l'aide de Nagios, car tous ces plugins/scripts pour Nagios sont déjà créés et vous pouvez télécharger et tester sans installer Nagios.

0
klerk