Forum Linux.debian/ubuntu Ressource ordinateur

Posté par  .
Étiquettes : aucune
0
13
mai
2005
Salut,

Je voudrais écrire un script permettant de relever toutes les X secondes les valeurs de charge de la CPU ainsi que la consommation mémoire.

Ce script, j'aimerais pouvoir le lancer et l'arrêter manuellement.

Comment dois-je m'y prendre? Puis-je m'inspirer d'un script qui a déjà été écrit? Quelles commandes utiliser?

Merci d'avance
  • # top ?

    Posté par  . Évalué à 2.

    Je voudrais écrire un script permettant de relever toutes les X secondes les valeurs de charge de la CPU ainsi que la consommation mémoire.

    ça ressemble à top. Mais si tu veux vraiment le réécrire => man proc

    Puis-je m'inspirer d'un script qui a déjà été écrit?
    oui c'est même recommandé
  • # vmstat ?

    Posté par  . Évalué à 2.

  • # /proc

    Posté par  . Évalué à 1.

    Salut,

    Une première piste pour la mémoire ...

    % cat /proc/meminfo
    MemTotal: 516596 kB
    MemFree: 5704 kB
    Buffers: 104808 kB
    Cached: 174800 kB
    SwapCached: 0 kB
    Active: 203908 kB
    ...

    JAY
  • # Tu peux t'inspirer de ca

    Posté par  . Évalué à 2.

    #!/bin/sh
    
    # temps de rafraichissement en secondes
    REFRESH_TIME=1
    
    cpu_line=`cat /proc/stat | grep "^cpu " | tr -s ' '`
    old_user=`echo $cpu_line | cut -f2 -d' '`
    old_nice=`echo $cpu_line | cut -f3 -d' '`
    old_sys=`echo $cpu_line | cut -f4 -d' '`
    old_other=`echo $cpu_line | cut -f5 -d' '`
    
    while true
    do
      clear
    
      # On récupère les info mémoire dans meminfo
      # Il y a surement moyen  de faire un parsing plus propre 
      # avec awk mais je ne le connais pas assez
      echo "Utilisation memoire :"
      cat /proc/meminfo | grep -e MemTotal -e Mapped | tr -s " " | \
      cut -f2 -d" " | sort | tr "\n" "#" | sed -e s/"#"/" \/ "/ | \
      sed -e s/"#"/" ko\n"/
      echo ""
    
      # Les info CPU sont récupéré dans le fichier /proc/stat
      cpu_line=`cat /proc/stat | grep "^cpu " | tr -s ' '`
    
      new_user=`echo $cpu_line | cut -f2 -d' '`
      new_nice=`echo $cpu_line | cut -f3 -d' '`
      new_sys=`echo $cpu_line | cut -f4 -d' '`
      new_other=`echo $cpu_line | cut -f5 -d' '`
    
      # Toutes les REFRESH_TIME seconde(s), on récupère la différence entre la 
      # nouvelle valeur et l'ancienne
      user=`expr $new_user - $old_user`
      nice=`expr $new_nice - $old_nice`
      sys=`expr $new_sys - $old_sys`
      other=`expr $new_other - $old_other`
      total=`expr $user + $nice + $sys + $other`
    
      # Et on affiche les pourcentages
      echo "Utilisation CPU :"
      echo "user  : `expr $user \* 100 / $total`%"
      echo "nice  : `expr $nice \* 100 / $total`%"
      echo "sys   : `expr $sys \* 100 / $total`%"
      echo "other : `expr $other \* 100 / $total`%"
    
      old_user=$new_user
      old_nice=$new_nice
      old_sys=$new_sys
      old_other=$new_other
    
      sleep $REFRESH_TIME
    done
    
  • # MRTG

    Posté par  . Évalué à 1.

    Tu dois pouvoir utiliser :
    * le script ci-dessus, pour mettre les chiffres dans un fichier texte (format à vérifier)
    * mrtg, pour faire un graphique à partir de ces fichiers texte

    MRTG permet de faire des graphiques sur 1 jour, 1 semaine et 1 mois, par exemple, l'un sous l'autre. Ca fait des lustres que je ne l'ai pas utilisé mais c'était performant, autrefois.

    Sinon, ta série de chiffres, tu l'exploiteras comment ? Dans un fichier Excel-like ?
    • [^] # Re: MRTG

      Posté par  . Évalué à 1.

      Je ne m'étais pas poser la question concernant l'exploitation de ces chiffres mais ca pourrait être intéressant en fait.

      Il faudrait que j'enregistre mes données de manière à ce qu'elles soient facilement exploitables avec un Excel-like.

      As tu des idées à me proposer ???

      Merci d'avance
      • [^] # Re: MRTG

        Posté par  . Évalué à 1.

        Si tu veux importer simplement dans un "Excel-like", utilise le format CSV ("coma separated value" si je me souviens bien).
        Je te laisse googler.
        • [^] # Re: MRTG

          Posté par  . Évalué à 1.

          Salut,

          Etant peu habitué aux scripts, j'ai une question bête à te poser.

          J'ai essayé d'exécuter ton script mais j'ai l'erreur suivante qui s'affiche ;

          " : bad interpreter or .. directory"

          Cela signifie qu'une commande n'est pas valide ??

          Merci d'avance

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.