MYSQL et process actifs (PROCESSLIST)

Résolu/Fermé
sam_103 Messages postés 17 Date d'inscription mercredi 12 octobre 2011 Statut Membre Dernière intervention 14 décembre 2011 - Modifié par sam_103 le 12/10/2011 à 12:23
sam_103 Messages postés 17 Date d'inscription mercredi 12 octobre 2011 Statut Membre Dernière intervention 14 décembre 2011 - 8 nov. 2011 à 10:15
Bonjour,

Je voudrai savoir svp comment je pourrai compter le nombre de process actifs dans mysql.
Avec "show processlist;" je peux visualiser ceux en cours mais quelle commande peut me retourner leur nombre ( nombre de ligne!)

PS: j'ai une distrib mysql 4.1.12

Merci pour votre aide !


A voir également:

1 réponse

laoshu Messages postés 1231 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 24 mai 2015 350
31 oct. 2011 à 18:52
Bonsoir,

essaye cette commande depuis un terminal :

moi="le nom de l'utilisateur mysql que tu veux utiliser"

let a=$(echo "show processlist;" |mysql -u$moi -p |wc -l )-1 && echo $a

Note:
tu peux ne pas mettre le -u$moi, si il s'agit du même nom que $USER (celui qui envoie la commande) et tu peux aussi taper directement le nom de l'utilisateur derrière le -u (sans espace entre -u et le nom d'utilisateur).
0
sam_103 Messages postés 17 Date d'inscription mercredi 12 octobre 2011 Statut Membre Dernière intervention 14 décembre 2011
Modifié par sam_103 le 7/11/2011 à 10:14
Merci bien laoshu,
ta commande me retourne bien une valeur seulement pas exactement la bonne.
Quand il y'a un seul processus actif elle me retourne 2 .... elle rajoute toujours 1 à la valeur qu'elle devrait retourner.
bon ce n'est pas dramatique je peux m'en contenter mais est ce que tu saurais par hasard pourquoi stp?

Merci encore
0
laoshu Messages postés 1231 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 24 mai 2015 350
7 nov. 2011 à 17:42
Bonjour,

echo "une commande" | mysql -u[user] -p[password] [nom_de_la_base]
envoi la commande à mysql pour la base concernée, le mot de passe pouvant être précisé ou non (si on ne met que -p puis un espace, il faudra taper le mot de passe de manière interactive dans le shell, mais si on marque le mot de passe il sera visible dans les logs).

| wc -l
(-l étant un L minuscule) permet de récupérer la sortie pour en compter les lignes.

$(une commande)
Permet que la commande soit executée

let a=x-y
ici : let a=(lacommande)-1
(et il s'agit ici du chiffre un)
attribue à la variable $a le résultat de l'opération x-y

mais tu pourrais aussi écrire (ce qui serrait sans doute mieux en fait) :
a=$( echo $(echo "show processlist;" |mysql -u$moi -p |wc -l )-1 |bc ) && echo $a 

Donc sans le let devant, et avec |bc à la fin, en faisant attention aux $(...).
bc est un outil puissant pour les calculs et qui permet plus de choses que let. (si tu préfères que ton ordi fasse les calculs à ta place, je te recommande les pages «man bc» ainsi que les explications que tu pourras trouver sur le web).

Mais normalement, avec ces deux commandes tu obtiens le même résultat, qui devrait être le bon... sinon, essaye simplement le «echo "ma commande" |mysql -uuser -p» pour voir quels sont les résultats. Si il y a 2 lignes inutiles pour ta recherche, remplace le -1 par un -2.
0
sam_103 Messages postés 17 Date d'inscription mercredi 12 octobre 2011 Statut Membre Dernière intervention 14 décembre 2011
8 nov. 2011 à 10:15
oui je vais remplacer le -1 par -2, c'est juste que je trouvais bizarre que ça me retourne 1 en plus...
Bref je te remercie beaucoup, j'ai trouvé ce que j'ai cherché. A bientôt^^
0