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 :

Script qui contrôle la ressource d'un exécutable


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2011
    Messages : 88
    Par défaut Script qui contrôle la ressource d'un exécutable
    Bonjour,

    J'ai un dédié sous linux centos. J'aimerai une aide sur la réalisation d'un petit script qui check toutes les 1ou 2-3 secondes si un programme X use plus de 1 gb de mémoire ( ram ) alors il me prévient via un log avec la date et l'heure/seconde et kill le script pour éviter le flood.

    Donc si programme X est > à 1gb de mémoire alors log date/haure "blabla" et kill script.

    Merci

    ps: je sais pas trop ou mettre ce sujet tellement il y a de choix. ( je pense qu'ici est le meilleur choix au final )

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

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

    il te faut récupérer les informations concernant
    la mémoire système, depuis /proc/meminfo
    la mémoire utilisée par le processus, depuis /proc/<PIDprocsess>/statm
    (ce qui implique de connaître le PID du processus surveillé)

    et comparer ces informations dans une boucle infinie "temporisée" toutes les 1-3 secondes.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2011
    Messages : 88
    Par défaut
    Bonjour,

    Merci d'avoir répondu mais je n'ai aucune compétence la dessus, ça serait pour une aide un peu plus grande.

    Merci.

    edit:

    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
     
    ps -eo fname,rss | awk '!/RSS/{ if ($2 > 500000) print $1}' >/tmp/tempfile
    test -s /tmp/tempfile &&
    (
    //echo HELO test.com
    sleep 2
    echo "mail from:<test@mail.com>"
    sleep 2
    echo "RCPT TO:<mailto@server.com>"
    sleep 2
    echo DATA
    sleep 2
    cat /tmp/tempfile
    echo .
    echo QUIT
    sleep 2) | telnet 1.*.*.* 25
    rm /tmp/tempfile
    From: test@mail.com
    To: mailto@server.com
    Subject: Processes taking more than 500MB
     
    These processes are taking more than 500MB RAM.
    Please check it.
    Bout de script trouvé sur le net, pour une base de travail.

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Ce bout de code que tu ne maîtrise absolument pas et qui n'a rien à voir avec ta problématique, tu peux l'oublier

    Pour récupérer le pid de ton processus tu peux te servir de la commande ps et de grep

    Exemple avec firefox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps -ef | grep firefox | awk -F " " '{print $2}'
    à partir de là tu peux récupérer les pids dans une variable et parcourir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    listPid=$(ps -ef | grep firefox | awk -F " " '{print $2}')
     
    while read pid; do # Pour chaque pid
    #...
    done <<< $listPid
    Grâce aux indications de N_Bah tu récupère la mémoire consommée par le processus et tu kill si ça dépasse la valeur que tu veux.

    Et enfin tu met tout ça dans une boucle infini avec un sleep pour attendre 3 secondes avant de passer à l'itération suivante.

    Et si tu veux que ce script soit lancé à chaque démarrage, tu as le fichier /etc/init.d/rc.local pour ça.

    Bref, avec ça + les manpages tu as tout ce qu'il te faut pour réussir. Il faut fournir davantage d'efforts

    Cordialement,
    Idriss

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2011
    Messages : 88
    Par défaut
    Merci de répondre et prendre son temps pour m'aider.

    http://www.unix.com/shell-programmin...e-process.html

    voici la source du script, ça semble être la même aide que moi non?

    J'utilise:
    pid = 29125
    user= stun
    command = abc ( programe )

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Re bonjour.

    Citation Envoyé par maloy Voir le message
    voici la source du script, ça semble être la même aide que moi non?
    De loin. Là il envoie des mails, il kill pas, et t'as plusieurs spécificités dans ton besoin et dans son besoin qui font que c'est une perte de temps de faire un gros copier coller sans comprendre ce que ça fait. Ça ne fera pas ce que tu attends toi.

    Donc il vaut mieux partir sur le développement de ton script à toi avec les éléments qu'on te donne, et le fruit de recherches personnelles mais qui ne doivent pas te donner de grosses solutions toutes faites inadaptées à ton besoin (les exemples de script et de commandes, c'est bien de t'en servir mais tu dois prendre uniquement ce dont tu as besoin et l'adapter).

    Cordialement,
    Idriss

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/03/2007, 16h43
  2. Réponses: 1
    Dernier message: 12/03/2007, 19h56
  3. Script qui s'exécute deux fois ?
    Par ben53 dans le forum Langage
    Réponses: 1
    Dernier message: 29/01/2007, 15h56
  4. Script qui s'exécute 2 fois!
    Par franculo_caoulene dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 07/12/2005, 09h48

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