IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Compteur de ligne successives


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Par défaut Compteur de ligne successives
    Bonjour,
    Je débute en shell donc je m'excuse d'avance si mes questions sont naives.

    J'ai deux problèmes :

    Le premier problème est assez simple mais je ne vois pas mon erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	MESURE=_mesures_
                   COMPTEUR=compteur
                   PROC01=Serveur	
     
    	COMPT=`grep '25%' date '+%d%m%y'${MESURE}${PROC01}.txt | wc -l`	
    		echo $COMPT > $REP_FICMES/`date '+%d%m%y'`${COMPTEUR}.txt
    Le but est de compter le nombre de fois sur la journée où un processeur atteint 25 % de charge. Utiliser l'expression date '+%d%m%y' fonctionne bien pour créer le fichier dans lequel je veux stocker mon compteur mais pas pour récupérer avec le grep le fichier dans lequel sont tracées les puissances.

    Si je remplace date '+%d%m%y' par la date en dure, cela fonctionne mais pas avec l'expression.


    Mon deuxième problème est que je voudrais compter le nombre de fois où le processeur atteint 25% 12 fois d'affilée (soit une minute à charge pleine puisque l'on trace l'occupation du CPU avec un pas de 5 secondes). J'ai fait quelques essais avec du code dans awk ou sed mais je ne m'en sors pas. Si quelqu'un pouvait me mettre sur la piste d'un algorithme, cela serait très sympa.

    Le fichier trace a ce format :

    03/10/12 09:31:34 7,7% Serveur.exe/63
    03/10/12 09:31:39 7,2% Serveur.exe/63
    03/10/12 09:31:45 7,7% Serveur.exe/63

    En vous remerciant par avance,

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 654
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COMPT=$(grep '25%' $(date +'%d%m%y')${MESURE}${PROC01}.txt | wc -l)
    il est compliqué d'inclure des substitutions de commandes du type `; il vaut mieux utiliser la forme moderne des substitutions de commandes : $() .

    pour compter le nombre de fois consécutive où le processeur atteitn 25%, je ferais ça au remplissage
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Par défaut
    Merci. Effectivement en rajoutant $(), cela fonctionne bien.

    Je vais continuer à réfléchir sur comment insérer un compteur de lignes successives au moment de la trace.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Quand tu postes du code, merci de vérifier l'indentation lors de la prévisualisation du message.
    C'est plus agréable à lire et ça repose les neurones (ou ce qu'il en reste).

    Citation Envoyé par Schnouf00 Voir le message
    je voudrais compter le nombre de fois où le processeur atteint 25% 12 fois d'affilée (soit une minute à charge pleine puisque l'on trace l'occupation du CPU avec un pas de 5 secondes). J'ai fait quelques essais avec du code dans awk ou sed mais je ne m'en sors pas. Si quelqu'un pouvait me mettre sur la piste d'un algorithme, cela serait très sympa.

    Le fichier trace a ce format :

    03/10/12 09:31:34 7,7% Serveur.exe/63
    03/10/12 09:31:39 7,2% Serveur.exe/63
    03/10/12 09:31:45 7,7% Serveur.exe/63
    Pour les specs, il faudrait préciser ce qui se passe si le processeur est à plus de 25% pendant plus de 12 fois d'affilée.
    S'il l'est pendant 13 fois d'affilée, veux-tu une ou deux alarmes?
    S'il l'est pendant 24 fois d'affilée, veux-tu une, deux ou 23 alarmes?

    Pour la suite, je supposerai une dans ces 2 cas.

    Pour l'algo, je ferais un automate d'état fini, avec 3 états (normal, surcharge, surcharge prolongée).
    Awk me paraît être une bonne piste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    état départ := normal.
    while not end of file ; do
      case état in
        normal) 
          if charge >= 25% ; then état := surcharge ; nb := 1 ; fi ;;
        surcharge)
          if charge < 25% then
            état = normal
          else
            nb++
            if nb >= 12 ; then
             alarme "Passage en surcharge prolongée depuis $nb"
             état := surcharge prolongée
            fi
          fi ;;
        surcharge prolongée)
          if charge >= 25% then
            nb++
          else
            alarme "Fin de surcharge prolongée depuis $nb"
            état := normal
          fi ;;
      esac
    done
    Attention! Si on finit en surcharge prolongée, on n'a pas le signal de fin de surcharge prolongée.

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/01/2007, 18h57
  2. compteur de lignes
    Par A2rem dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/01/2007, 14h39
  3. compteur de lignes?
    Par lnpt23 dans le forum Bases de données
    Réponses: 5
    Dernier message: 27/06/2006, 16h37
  4. test entre des lignes successives d'une table
    Par preskovik dans le forum Access
    Réponses: 4
    Dernier message: 22/03/2006, 08h45
  5. compteur de ligne excel avec filtre
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/12/2005, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo