Memcalc
Memcalc est un petit outil Bash sous licence GPL qui répond à une question simple sans sortir l’artillerie lourde : combien de mémoire consomment réellement un service, un PID ou l’ensemble des processus d’un utilisateur ?
Je l’utilise notamment quand plusieurs processus appartiennent au même service et qu’un simple coup d’œil à ps ne donne pas immédiatement le total utile.
Trois modes de calcul
– --service additionne la mémoire consommée par les processus portant le nom demandé.
– --pid affiche la consommation du ou des PID indiqués.
– --user additionne la consommation de tous les processus appartenant à un utilisateur.
Plusieurs services, PID ou utilisateurs peuvent être demandés dans la même exécution. Memcalc collecte une seule fois l’inventaire complet des processus, puis effectue tous les calculs sur cette photographie cohérente.
Utilisation
Afficher l’aide ou la version :
./memcalc.sh --help
./memcalc.sh --versionCalculer la mémoire de plusieurs services :
./memcalc.sh --service apache2 php-fpm sshdVérifier un ou plusieurs PID :
./memcalc.sh --pid 1234 5678Calculer la consommation de plusieurs utilisateurs :
./memcalc.sh --user www-data mysqlLa sortie est exprimée en mégaoctets. Lorsqu’une cible n’existe pas ou ne consomme actuellement aucune mémoire, le script le signale explicitement au lieu d’afficher un résultat trompeur.
Ce que corrige la version 1.1
Cette version conserve volontairement le fonctionnement direct de l’outil, mais fiabilise son exécution :
– arguments conservés comme de vraies valeurs Bash, sans découpage involontaire ;
– validation stricte des PID ;
– collecte unique et complète de ps ;
– refus d’un rapport partiel si la collecte ou le calcul échoue ;
– aide, version et prise en charge de plusieurs cibles.
Dépendances et limites
Memcalc utilise uniquement Bash, ps et awk. Il ne nécessite pas les droits root, mais un utilisateur non privilégié reste naturellement limité par la visibilité que le système lui accorde sur les processus.
Le nom demandé avec --service doit correspondre exactement au nom de commande renvoyé par ps. Ce n’est ni un analyseur de cgroups, ni un remplaçant de systemd-cgtop : c’est un calcul rapide, lisible et facilement automatisable.
Ressources
Script : memcalc.sh
—
Christophe Casalegno (retrouvez tous mes liens, mes projets et mes réseaux sur all.bo)