2 votes

Commandes Bash bc et echo

J'écris un petit geeklet pour geektool, pour m'alerter quand la somme de la RAM inactive et libre sur mon Mac devient lente. Je ne suis pas très doué avec bash, donc j'ai un problème avec la sortie finale (elle devient vide). Voici le code :

inMem=$(top -l 1|awk '/PhysMem/ {print $6}'|sed s/M//) | freeMem=$(top -l 1|awk '/PhysMem/ {print $10}'|sed s/M//) | totalMem=$inMem+$freeMem | bc | echo $totalMem

Je me demande également si mon problème est optimal ou non. Merci beaucoup.

2voto

konsolebox Points 21338

Je me demande si cela pourrait réellement simplifier vos commandes. Je ne peux pas le tester puisque je ne suis pas sous OSX mais j'espère que cela fonctionnera.

read inMem freeMem totalMem < <(top -l 1 | awk '/PhysMem/ { i = $6; sub(/M/, "", i); f = $10; sub(/M/, "", f); printf("%d %d %d\n", i, f, i + f); exit; }')
echo "inMem: $inMem"
echo "freeMem: $freeMem"
echo "totalMem: $totalMem"

-1voto

user000001 Points 12050

Au lieu d'analyser top utilisez le /proc/meminfo fichier. Par exemple, avec :

$ head -2 /proc/meminfo
MemTotal:        4061696 kB
MemFree:          335064 kB

vous pouvez voir la mémoire totale et libre

-1voto

réponse de l'utilisateur000001 est juste, mais la question est alors "Comment faire pour obtenir /proc/meminfo en variables ?"

Vous pouvez utiliser cette solution purement bash pour le parsing :

read -d '' _  memTotal _ _ memFree _ < <(head -2 /proc/meminfo)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X