shell : test pour mesurer l'audience d'une appli

Postez ici vos scripts Bash, Python, etc.
falke
Messages : 595
Enregistré le : mar. 3 oct. 2017 21:28

shell : test pour mesurer l'audience d'une appli

Message par falke »

Bonjour,

j'aimerais faire un shell pour savoir si une appli lancée sur nos serveurs rencontre un certain succès (but de l'appli récupérer directement des documents sur le serveur , plutôt que les imprimer papier).

le but serait sur une certaine durée (par ex une journée) de lancer cette commande :


falke@falke-MacBookAir:~$ top | grep "top"

Code : Tout sélectionner

falke@falke-MacBookAir:~$ top | grep "falke" | grep "top" 
   3300 falke     20   0   12012   3928   3124 R   6,2   0,0   0:00.02 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,3   0,0   0:00.03 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,3   0,0   0:00.04 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,3   0,0   0:00.05 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,7   0,0   0:00.06 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,3   0,0   0:00.07 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,3   0,0   0:00.08 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,7   0,0   0:00.10 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,3   0,0   0:00.11 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,3   0,0   0:00.12 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,3   0,0   0:00.13 top                                                                                                        
   3311 falke     20   0   12008   3920   3120 S   0,8   0,0   0:00.02 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,4   0,0   0:00.14 top                                                                                                        
   3300 falke     20   0   12012   3928   3124 R   0,7   0,0   0:00.16 top                                                                                                        
   3311 falke     20   0   12008   3920   3120 S   0,3   0,0   0:00.03 top                                                                                                        
   3311 falke     20   0   12008   3920   3120 S   0,3   0,0   0:00.04 top 
problème , comme vous le voyez c'est que (ici j'utilise top comme test d'appli ) mais en fait dans la réalité ce serait un top | grep <mon_appli>

en raison de la réactualisation de la sortie de top un même pid apparait plusieurs fois, il me faudrait en tout fin (dédoublonner , triplonner les pid identique , puis compter le nombre de lancements de l'appli.
Par exple ici faudrait compter le pid 3300 une fois et 3311 aussi , soit deux instances seulement

Avez vous des idées ?

merci

bon week-end.
System:
Host: falke-MacBookAir Kernel: 5.15.0-91-generic x86_64 bits: 64
Desktop: Cinnamon 6.0.4 Distro: Linux Mint 21.3 Virginia

Machine:
Type: Laptop System: Apple product: MacBookAir7,2 v: 1.0
Autre Distro : Debian Sid et Endeavour en triple boot sur Btrfs. Noyau change tout le temps ..

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: shell : test pour mesurer l'audience d'une appli

Message par cyrille »

pas sur d'avoir tout bien compris
Tu veux compter le nombre d'instance de plusieurs applications qui se trouvent sur ton serveur ?

Perso

Je définirai une variable de type tableau ou liste (TABLEAU) contenant le nom des applications à compter

Je ferai une boucle sur sur ce tableau :

Code : Tout sélectionner

pour chaque ELEMENT du TABLEAU : 
   compte le nombre d'instance
   ps aux | grep ELEMENT (sans doute -1 pour virer le PID du grep
Non ?

Suis je à coté ?
Si oui, re explique la situation et si possible avec un exemple, ce serait plus parlant ;)

Exemple de gestion de la loop

Code : Tout sélectionner

#!/bin/sh   

list="tata toto titi"   
for element in $list    
do   
        echo "element =" $element   
        # ici mets la commande pour compter
done
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

falke
Messages : 595
Enregistré le : mar. 3 oct. 2017 21:28

Re: shell : test pour mesurer l'audience d'une appli

Message par falke »

salut @cyrille,

en fait l'appli se connecte en ssh sur le serveur, à chaque connection d'un utilisateur on voit un pid.

Donc , l'idée c'est de savoir combien de connection il y a eu . Après, pourquoi pas, affiner en sachant combien d'utilisateurs ce sont déjà
connectés (au moins une fois)

le problème c'est qu'avec le top qui raffraichît toutes les 5 secondes j'ai plusieurs fois le même pid , alors que c'est une connection. Faut donc dédoublonner tout ça.


@+
System:
Host: falke-MacBookAir Kernel: 5.15.0-91-generic x86_64 bits: 64
Desktop: Cinnamon 6.0.4 Distro: Linux Mint 21.3 Virginia

Machine:
Type: Laptop System: Apple product: MacBookAir7,2 v: 1.0
Autre Distro : Debian Sid et Endeavour en triple boot sur Btrfs. Noyau change tout le temps ..

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: shell : test pour mesurer l'audience d'une appli

Message par cyrille »

Tu veux donc compter le nombre d'user connectés sur ton serveur

qq pistes

Code : Tout sélectionner

who | grep -v localhost | wc -l

Code : Tout sélectionner

ps -A x |grep sshd |grep -v grep
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: shell : test pour mesurer l'audience d'une appli

Message par cyrille »

le problème c'est qu'avec le top qui raffraichît toutes les 5 secondes j'ai plusieurs fois le même pid , alors que c'est une connection. Faut donc dédoublonner tout ça.
Utiliser le pipe uniq

Code : Tout sélectionner

ma commande | avec un cut pour ne garder que la premiere colonne | uniq
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: shell : test pour mesurer l'audience d'une appli

Message par cyrille »

Tiens ça présente plusieurs façon de faire ce que tu souhaites
https://www.golinuxcloud.com/list-check ... ons-linux/
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

falke
Messages : 595
Enregistré le : mar. 3 oct. 2017 21:28

Re: shell : test pour mesurer l'audience d'une appli

Message par falke »

voilà ça avance voilà ce que j'arrive à faire une fois les processus associé à l'application extraits dans un fichier :

top | grep <nom_appli> >> session-txt

(j'interromps ce process au bout d'un certain temps par ctrl -C) mais dans le shell je ferais en sorte d'avoir un timer)

Code : Tout sélectionner

falke@falke-MacBookAir:~$ cat  session-txt | sort -k1 | cut -c10-13 ==> pid non dédoublonnés
2164
2164
2539
2539
2539
2539
2539
5530
5530
5530
5530
5530
5530
6101
6101
6101
6101
6101
6101
6101
6101
falke@falke-MacBookAir:~$ cat  session-txt | sort -k1 | cut -c10-13 | uniq ==>  pid dédoublonnés
2164
2539
5530
6101
falke@falke-MacBookAir:~$ cat  session-txt | sort -k1 | cut -c10-13 | uniq | wc -l ==> nb de sessions totales
4
System:
Host: falke-MacBookAir Kernel: 5.15.0-91-generic x86_64 bits: 64
Desktop: Cinnamon 6.0.4 Distro: Linux Mint 21.3 Virginia

Machine:
Type: Laptop System: Apple product: MacBookAir7,2 v: 1.0
Autre Distro : Debian Sid et Endeavour en triple boot sur Btrfs. Noyau change tout le temps ..

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: shell : test pour mesurer l'audience d'une appli

Message par cyrille »

résolu ?
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

falke
Messages : 595
Enregistré le : mar. 3 oct. 2017 21:28

Re: shell : test pour mesurer l'audience d'une appli

Message par falke »

Pas tout à fait. Auriez vous des pistes pour le timer
System:
Host: falke-MacBookAir Kernel: 5.15.0-91-generic x86_64 bits: 64
Desktop: Cinnamon 6.0.4 Distro: Linux Mint 21.3 Virginia

Machine:
Type: Laptop System: Apple product: MacBookAir7,2 v: 1.0
Autre Distro : Debian Sid et Endeavour en triple boot sur Btrfs. Noyau change tout le temps ..

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: shell : test pour mesurer l'audience d'une appli

Message par cyrille »

Plein d'exemples sur le net avec mots clef timer bash

Code : Tout sélectionner

START=$SECONDS

timer () 
        {
        hrs="$((($FINISH - $START)/3600))"
        min="$(((($FINISH - $START)/60)%60))"
        sec="$((($FINISH - $START)%60))"
        if [[ $(($FINISH - $START)) -gt 3600 ]]; then echo "$hrs:$min:$sec"
        elif [[ $(($FINISH - $START)) -gt 60 ]]; then echo "00:$min:$sec"
        else echo "00:00:$sec"
        fi
}

COMMANDE_QUI_PREND_DU_TEMPS

# affichage de la durée
FINISH=$SECONDS
ELAPSED=$(timer)
echo "durée : $ELAPSED"
Voir aussi la commande sleep

Code : Tout sélectionner

man sleep
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Répondre