Christophe CasalegnoAutoimmune warrior, Entrepreneur & Bio/Hacker

Memcalc 1.1 : calculer la mémoire des services, PID et utilisateurs

Mémoire des services, PID et utilisateurs

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 --version

Calculer la mémoire de plusieurs services :

./memcalc.sh --service apache2 php-fpm sshd

Vérifier un ou plusieurs PID :

./memcalc.sh --pid 1234 5678

Calculer la consommation de plusieurs utilisateurs :

./memcalc.sh --user www-data mysql

La 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)

Christophe Casalegno Brain 0verride

Soyez simple
et direct !