Oui, pardon, me suis un peu mélange avec la fatigue puis ne suis pas revenu quand je me suis rendu compte une bonne heure après que j'avais écrit mem au lieu de free ! Comme tu cherches la quantité libre, prendre en compte la swap n'a pas de sens ...parce-que idéalement il ne faut pas en avoir besoin et ne pas se dire que c'est de la mémoire qui est disponible normalement pour les programmes : quand ça swape c'est pas bon. Par ailleurs, tu peux régler le système pour ne pas utiliser la mémoire swap ou contrôler à quel seuil de saturation de la RAM il faut commencer à basculer. Mais en mode rapport, tu ne comptes pas sa présence sinon tu risques de croire que t'as assez de mémoire vive dispo au lieu de voir que ça sature, et sinon tu auras aussi du mal à expliquer aux hiérarchies qui sont de moins en moins technique quand on monte.
outputfile="systemusage.csv"# le jour où tu modifies, tu le fais en un seul endroit.
rm -vf "$outputfile"# -v pour afficher ce qui se passe (à utiliser si tu es en mode interactif)# -f au cas où tu aurais un alias avec -i# ou si tu lances en tant qu'un autre compte (mais ne marchera que pour root)command -v nproc &&NbrCrs=$(nproc --all)||NbrCrs=1# si la commande existe on l'utilise sinon on ne tient pas compte du nbr de çœurs
Si tu regardes ton fichier dans un éditeur de texte, tu verras que la faute n'est pas du côté de LibreOffice (ou n'importe quel autre tableur.) En effet, chaque commande se termine par un saut de ligne...
Dans la boucle, j'utiliserai plutôt quelque chose comme :
J'ai un petit doute sur la 7ème colonne (compressed) : tu devrais utiliser la 3ème (used) ou la 4ème (free) non ?
Sinon, j'ai supprimé le grep pour l'intégrer directement dans le awk
De l'autre côté, j'ai passé la valeur du nombre total de cœurs pour adapter le résultat comme tu le souhaitais. Mais j'ai un petit doute sur le dixième champ :
J'en profite pour reparler de top ; faut que t'essaye, juste pour la/le curiosité/fun...
top -l 1 -s 0| awk '/PhysMem:/ {print}'
Maintenant, il parait que je n'est pas la manière propre/canonique d'écrire les scripts : j'ai trop de vieux réflexes. Voici la correction pour que ce soit plus lisible et facile à maintenir :
Maintenant, j'ai une réserve sur echo -e : ce n'est pas portable (ton programme ne marchera pas comme espéré si tu utilises un autre interpréteur que bash ou peut-être sur une autre distribution dont l'implémentation de la commande ne supporte pas cette option...) Voici la bonne façon de faire :
# en reprenant les variables de la forme précédente...printf'%s\t%s\t%s\t\n'"$TheTime""$TheMem""$TheLoad"
J'espère n'avoir rien oublié et te laisse recoller les morceaux. :-)
"It is seldom that liberty of any kind is lost all at once." ― David Hume
[^] # Re: ça avance :-)
Posté par Gil Cot ✔ (site web personnel, Mastodon) . En réponse au message [résolu] visualiser charge CPU et mémoire | mesurer l'efficience. Évalué à 2.
Oui, pardon, me suis un peu mélange avec la fatigue puis ne suis pas revenu quand je me suis rendu compte une bonne heure après que j'avais écrit mem au lieu de
free! Comme tu cherches la quantité libre, prendre en compte la swap n'a pas de sens ...parce-que idéalement il ne faut pas en avoir besoin et ne pas se dire que c'est de la mémoire qui est disponible normalement pour les programmes : quand ça swape c'est pas bon. Par ailleurs, tu peux régler le système pour ne pas utiliser la mémoire swap ou contrôler à quel seuil de saturation de la RAM il faut commencer à basculer. Mais en mode rapport, tu ne comptes pas sa présence sinon tu risques de croire que t'as assez de mémoire vive dispo au lieu de voir que ça sature, et sinon tu auras aussi du mal à expliquer aux hiérarchies qui sont de moins en moins technique quand on monte.Oui, pour le processeur il faut tenir compte du nombre de cœur, et même parfois si tu fais de l'hyperthreading ! Lire par exemple les échanges sur https://unix.stackexchange.com/questions/218074/how-to-know-number-of-cores-of-a-system-in-linux
Je te propose ceci, à faire avant d'entrer dans la boucle :
Si tu regardes ton fichier dans un éditeur de texte, tu verras que la faute n'est pas du côté de LibreOffice (ou n'importe quel autre tableur.) En effet, chaque commande se termine par un saut de ligne...
Dans la boucle, j'utiliserai plutôt quelque chose comme :
J'ai un petit doute sur la 7ème colonne (compressed) : tu devrais utiliser la 3ème (used) ou la 4ème (free) non ?
Sinon, j'ai supprimé le
greppour l'intégrer directement dans leawkDe l'autre côté, j'ai passé la valeur du nombre total de cœurs pour adapter le résultat comme tu le souhaitais. Mais j'ai un petit doute sur le dixième champ :
J'en profite pour reparler de
top; faut que t'essaye, juste pour la/le curiosité/fun...Maintenant, il parait que je n'est pas la manière propre/canonique d'écrire les scripts : j'ai trop de vieux réflexes. Voici la correction pour que ce soit plus lisible et facile à maintenir :
Maintenant, j'ai une réserve sur
echo -e: ce n'est pas portable (ton programme ne marchera pas comme espéré si tu utilises un autre interpréteur que bash ou peut-être sur une autre distribution dont l'implémentation de la commande ne supporte pas cette option...) Voici la bonne façon de faire :J'espère n'avoir rien oublié et te laisse recoller les morceaux. :-)
"It is seldom that liberty of any kind is lost all at once." ― David Hume