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 :

meminfo dans vmstat


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
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut meminfo dans vmstat
    Bonsoir à tous,
    J'essaie d'afficher la mémoire utilisée dans le vmstat, mais sans succès.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    total=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`
    free=`cat /proc/meminfo | grep MemFree | awk '{print $2}'`
    used=$(((total-free)/1024))
     
     
    printf "CPU en \045\tRAM en Mo\res\t total des res\n" > test.xls
    vmstat $1  $2 | awk -v i='-2' '{value=$used; Total+=value; print 100-$15 "\t\t" $4/1024 "\t\t" $4*(100-$15)/1024 "\t\t" Total}' >> test.xls;
     sed -i".bak" '2,3d' test.xls
    je veux afficher la valeur de la mémoire utilisée lors de la commande vmstat.
    Quelqu'un à une idée ?

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    used=$(awk '/MemTotal/ { total = $2 } /MemFree/ { free = $2; printf("%d\n", ( total - free ) / 1024)}' /proc/meminfo)
     
    vmstat $1 $2 | awk -v i='-2' -v value=$used '! /[[:alpha:]]/ { Total+=value; printf("%d\t\t%d\t\t%d\t\t%d\n", 100-$15,  $4/1024,  $4*(100-$15)/1024, Total)}'
    ton problème, c'est que $used n'est pas développée (comme toute variable shell) entre guillemets simples '
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    Merci, mais la valeur ne varie jamais. Lorsque je lance la commande pendant 1minute et que j'effectue des actions (lancement de programme, ...) la valeur ne bouge pas.
    Comment corriger cela ?
    De plus, lorsque la valeur " 100-$15" me retourne 0, je voudrais avoir 1 à la place.

    Savez vous comment je peux faire ?

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

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

    la valeur ne varie jamais
    ce n'est pas normal, puisqu'à chaque ligne Total est augmenté de la valeur de value.
    Par contre que value/used ne change pas c'est normal, puisqu'il n'est défini qu'une fois avant de lancer la commande vmstat.

    lorsque la valeur " 100-$15" me retourne 0, je voudrais avoir 1 à la place
    tu affectes le calcul à une variable, puis tu peux soit tester la valeur avec un if, soit utiliser un opérateur ternaire.

    Tutoriel gawk
    le manuel de gawk
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    Oui, c'est bien la valeur value/used qui ne change pas. Je voudrais la définir à chaque fois, mais je n'y arrive pas.
    Vous savez comment je peux m'y prendre ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    vmstat $1 $2 | awk \
    -v i='-2' \
    -v value=$(awk '/MemTotal/ { total = $2 } /MemFree/ { free = $2; printf("%d\n", ( total - free ) / 1024)}' /proc/meminfo) \
    '! /[[:alpha:]]/ { Total+=value; printf("%d\t\t%d\t\t%d\t\t%d\n", 100-$15,  $4/1024,  $4*(100-$15)/1024, Total)}'
    mais ça ne me plaît pas,je préférerais ne faire qu'un seul appel awk.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DBLookupComboBox dans DBGrid
    Par KThrax dans le forum Bases de données
    Réponses: 7
    Dernier message: 24/08/2004, 15h18
  2. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39
  3. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Documentation DirectX dans C++Builder 3
    Par srvremi dans le forum DirectX
    Réponses: 1
    Dernier message: 26/04/2002, 09h59

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