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?
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.
Cochez au sommet .
Lisez ceci, https://lwn.net/Articles/387202/
Voir,
Vous pouvez voir la charge de disque/mémoire/cpu par les applications:
Par exemple, l'utilisation du disque:
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.
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
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
Si vous utilisez Solaris, vérifiez ceci: showcpucount
Cela vous donnera une idée de la procédure à suivre pour écrire votre code.
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.