Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/04/2015, à 12:41

BenjiBoy

[RESOLU] statistique utilisation serveur

Bonjour,

je voudrais faire une statistique d'utilisation des serveurs de mon entreprise.
Je voudrais récupérer un fichier texte contenant la liste des users connectés, les process qu'ils utilisent, et/ou le taux d'occupation des CPU.

Donc je suis en train de faire un shell avec tout d'abord un "who -q" dont la liste doit entrer dans une variable à chaque fois, exemple :

benjiboy@server:~$ who -q
toto titi tata truc bidule benjiboy
# users=6

Je souhaiterais que toto, titi, tata ... soient dans une variable var1 var2 var3 ...

... Et ensuite faire des "ps -ef | grep" pour toto, titi, et tout.

Je n'ai qu'un niveau léger en shell, je ne vois pas comment procéder. Je ne sais même pas si c'est réalisable, qu'en dites-vous ?

Bonne journée.

Dernière modification par BenjiBoy (Le 01/09/2015, à 15:52)

Hors ligne

#2 Le 20/04/2015, à 17:13

BenjiBoy

Re : [RESOLU] statistique utilisation serveur

Bonjour,
je remonte le sujet si jamais il est passé à la trappe du week-end ... wink

Hors ligne

#3 Le 20/04/2015, à 18:00

pingouinux

Re : [RESOLU] statistique utilisation serveur

Bonjour,
À tout hasard

while read user; do echo "$user"; ps axo user,pcpu,comm | grep "$user"; done < <(printf "%s\n" $(who -q|head -1) | sort -u)

Hors ligne

#4 Le 27/04/2015, à 13:06

BenjiBoy

Re : [RESOLU] statistique utilisation serveur

Ah merci !

Mais par contre quand je disais "Je n'ai qu'un niveau léger en shell", c'était pas des blague ...
Comme c'est un serveur commun à plusieurs centaines de personnes, il faudrait que je sache ce que ça fait exactement, pourrais-tu s'il te plaît brièvement commenter tes lignes de code ?

Je te remercie, en attendant j'essaie ça en local dans ma sandbox :-).

Hors ligne

#5 Le 27/04/2015, à 13:41

pingouinux

Re : [RESOLU] statistique utilisation serveur

Liste des utilisateurs connectés, sans doublons, un par ligne

printf "%s\n" $(who -q|head -1) | sort -u

Liste des commandes lancées par un utilisateur (user, cpu, commande)

ps axo user,pcpu,comm | grep "$user"

Boucle sur chaque utilisateur (résultat du printf)

while read user
do
   echo "$user"
   ps axo user,pcpu,comm | grep "$user"
done < <(printf "%s\n" $(who -q|head -1) | sort -u)

On pourrait peaufiner en n'appelant qu'une seule fois la fonction ps et en stockant le résultat dans un fichier intermédiaire.

Hors ligne

#6 Le 27/04/2015, à 14:57

BenjiBoy

Re : [RESOLU] statistique utilisation serveur

Et bien c'est pas mal du tout ça !
Ca prend forme...

J'ai essayé ça et voilà je résultat type :

toto
toto 0.0 sshd
toto 2.0 matlab
toto 15.3 soft
titi
titi 0.0 sshd
titi 2.0 matlab
titi 15.3 soft
...

Maintenant comment faire pour qu'à un moment j'ai une "addition" de l'occupation CPU par utilisateur ? (oui j'en demande beaucoup)
Ou bien faire un fichier texte par user ?

Qu'en penses-tu ?

Hors ligne

#7 Le 27/04/2015, à 17:49

pingouinux

Re : [RESOLU] statistique utilisation serveur

Maintenant comment faire pour qu'à un moment j'ai une "addition" de l'occupation CPU par utilisateur ? (oui j'en demande beaucoup)
Ou bien faire un fichier texte par user ?

Tu peux essayer ceci

ps axo user,pcpu,comm >/tmp/ps.out

while read user
do
 (
#  echo "$user"
   grep "$user" /tmp/ps.out | awk '{s+=$2;print}END{printf("TOTAL=%s\n",s)}'
 ) >/tmp/"$user.out"
done < <(printf "%s\n" $(who -q|head -1) | sort -u)

Hors ligne

#8 Le 28/04/2015, à 08:07

BenjiBoy

Re : [RESOLU] statistique utilisation serveur

Pfiou ... Respect pingouininux.
Autant dire que je n'aurais jamais trouvé par moi-même !

En tout cas ça marche très bien.
Maintenant je vais tacher de mettre ça en forme dans un gnuplot et de faire une jolie statistique d'utilisation des serveurs !

Merci infiniment, je garde le sujet ouvert probablement jusqu'à la fin de semaine, mais ne manquerai pas d'inscrire ce topic en résolu lorsque j'aurais terminé.

a+

Hors ligne