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

Administration système Discussion :

Identifier précisément un process


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Par défaut Identifier précisément un process
    Bonjour,

    Je cherche à identifier précisément (récupérer le pId) un processus lancé dans un screen (le but est en définitive de parvenir à le faire via un script donc exit les solutions basées sur l'observation [ps aux, ..]).

    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pgrep -f nom-du-process
    Le problème est que plusieurs process portent le même nom et ne se différencient que par les variables qu'ils utilisent. Une variable -port XX plus précisément qui me semble la plus susceptible de les différencier de manière unique.

    Comment puis-je filtrer mes process, selon leurs noms et la valeur d'une de leurs variables ?

    Un grand merci d'avance.

  2. #2
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    L'utilisation de grep n'est pas possible ?

  3. #3
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Si tu peux t'approvisionner à la source c'est mieux.

    Si tu maîtrise le lancement de tes processus tu peux récupérer leur pid au moment du lancement
    une fois récupéré tu peux le stocker dans un fichier et le récupérer si tu en as besoin plus tard.

    Exemple pour récupérer le pid:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #!/bin/ksh
     
    ## Lancement du processus en tache de fond.
    mon_programme &
    ## Recuperation du Pid
    program_pid=$!
    echo "le pid du programme est $program_pid"

  4. #4
    Nouveau candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Par défaut
    Merci pour vos réponses. J'avoue être un peu perdu.

    Concrètement voilà les commandes (qui permettent de démarrer trois serveurs de jeu) que je lance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    depuis le répertoire srv/srcds/nomod/css/
    
     screen -dmS css ./srcds_run -game cstrike +ip xx.xxx.xxx.xxx -port 27015 +maxplayers 21 +map de_dust2 -tickrate 100 -autoupdate
    
    depuis le répertoire srv/srcds/fun/css/
    
     screen -dmS css ./srcds_run -game cstrike +ip xx.xxx.xxx.xxx -port 27016 +maxplayers 21 +map de_dust2 -tickrate 100 -autoupdate
    
    depuis le répertoire srv/srcds/war/css/
    
     screen -dmS css ./srcds_run -game cstrike +ip xx.xxx.xxx.xxx -port 27019 +maxplayers 21 +map de_dust2 -tickrate 100 -autoupdate
    Comment me faudrait-il procéder ?

  5. #5
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Voici un exemple de ce qu'il est possible de faire.

    Ici un script qui fait des arrêts/relance des trois serveurs (tant que tu ne nettoie pas les fichiers de sauvegarde des pid).

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    #!/bin/ksh
    # Paramètres de lancement des différent programmes.
    PARAM_NOMOD="srv/srcds/nomod/css/screen -dmS css ./srcds_run -game cstrike +ip xx.xxx.xxx.xxx -port 27015 +maxplayers 21 +map de_dust2 -tickrate 100 -autoupdate"
    PARAM_FUN="srv/srcds/fun/css/screen -dmS css ./srcds_run -game cstrike +ip xx.xxx.xxx.xxx -port 27016 +maxplayers 21 +map de_dust2 -tickrate 100 -autoupdate"
    PARAM_WAR="srv/srcds/war/css/screen -dmS css ./srcds_run -game cstrike +ip xx.xxx.xxx.xxx -port 27019 +maxplayers 21 +map de_dust2 -tickrate 100 -autoupdate"
     
     
    check_pid_and_kill() {
     
     ## Chargement du fichier de PID si le fichier existe.
     file=$1
     if [ -f $file ]
     then
     
       . $file
       echo "Recherche du PID ($CHECK_PID)"
       ps -u $LOGNAME | grep screen | awk '{print $1}' | grep $CHECK_PID
       if [ $? -eq 0 ]
       then
         # on tue le process.
         echo "Arret du pid ($CHECK_PID)"
         kill -9 $CHECK_PID
        else
         echo "PID ($CHECK_PID) non trouvé" 
        fi
       unset CHECK_PID
     else
      echo "Fichier $file non trouvé"  
     fi 
     
     
    }
     
    start_and_save_pid() {
     # Lecture du nom du fichier a sauvegarder.
     outfile=$1
     # consommation de largument
     shift
     # lancement du programme.
     echo "Lancement de "$*
     nohup $* & 
     #sauvegarde du pid dans le fichier donné en entrée
     PID=$!
     echo "Sauvegarde du pid ($PID) dans $outfile"
     echo "export CHECK_PID=$PID" > $outfile
    }
     
     
    ## Arret des programmes.
    check_pid_and_kill  ./screen_nomod.pid
    check_pid_and_kill  ./screen_fun.pid
    check_pid_and_kill  ./screen_war.pid
     
    ## Relance des programmes
    start_and_save_pid  ./screen_nomod.pid $PARAM_NOMOD
    start_and_save_pid  ./screen_fun.pid   $PARAM_FUN
    start_and_save_pid  ./screen_war.pid   $PARAM_WAR
    autrement tu peux aussi changé l'ordre des arguments (si le programme est bien fait) pour faire apparaitre les champs significatif (port) en premier.

Discussions similaires

  1. Identifier la fin d'un process
    Par Domino40 dans le forum VB.NET
    Réponses: 2
    Dernier message: 22/10/2010, 16h46
  2. Identifier les process lié à un fichier
    Par GSXRider dans le forum C#
    Réponses: 10
    Dernier message: 12/04/2008, 12h23
  3. Identifier les fichiers en cours d'écriture par un process ext
    Par sinmaniphel dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 24/01/2007, 10h22
  4. Réponses: 4
    Dernier message: 01/07/2003, 16h47
  5. [DOM] Ajout d'une instrution de processing
    Par corwin_d_ambre dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 06/05/2003, 12h51

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