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?
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?
Réponses:
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 la /
partition. Vous n'avez pas précisé ce que vous vouliez donc je suppose que c'est ce que vous recherchez.
awk
github.com/rahulinux/scripts/blob/master/sys_info.sh
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
Vérifiez 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 collectées dans le répertoire /var/log/atop/
dans des fichiers 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
- Rapide vue d'ensemble
vmstat 1
affiche les statistiques d'E / S des performances du système
top
dynamique
htop
similaire au haut
Si vous utilisez Solaris, vérifiez ceci: showcpucount
Cela vous donnera une idée de la procédure à suivre pour écrire votre code.
Voici mon code pour obtenir l'utilisation du CPU et de la 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
Vous devriez pouvoir afficher l'utilisation de la mémoire, l'utilisation du disque et la charge du processeur en utilisant:
(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)