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

Solaris Discussion :

Recuperer le PID d'un deamon sous Solaris


Sujet :

Solaris

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Par défaut Recuperer le PID d'un deamon sous Solaris
    Bonjour ,
    voici un problème qui me rend... J'ai un daemon en Perl et je voudrai créer un Watchdog sous Solaris . pour récupérer le PID du daemon j'utilise PGREP qui normalement renvoie le PID du processus a partir de son nom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //en console :
    pgrep -f dashboard 
    // me renvoie ce qu'il me faut juste un pid de mon daemon
    dans un fichier bash elle me renvoie deux pid , celui du deamon et le pid de la commande elle même :s est ce normal et comment y remédier.
    voila mon script

    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
     
    # Find the pid of the process 
     
     if [ -e "${PIDFILE}" ]; 
        then FIND_PROC=`cat ${PIDFILE}` ;
        else 
        	FIND_PROC=`pgrep -f dashboard`;
     fi
     
    	echo ${FIND_PROC};		
     
     
    # if FIND_PROC is empty, the process has died; restart it
     
    if [ -e ${FIND_PROC} ]; 
          then
          echo DASHBOARD failed at `date`
          ${DASHBOARD} start
          else
          echo DASHBOARD alive at `date`
     
    fi

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    N'etant pas certain de bien comprendre, peux-tu nous donner les resultats des commandes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uname -a
    zoneadm list
    pgrep -f dashboard
     
    ps -edf | grep <le premier pid>
    ps -edf | grep <le second pid>
    Merci
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Par défaut
    Résolu

    En fait j'avais appeler mon script dashboardWartchdog.sh
    du coup au moment du pgrep dans ce script il trouver le PID du script lui même et le PID de mon daemon .
    c'est con mais ça ma quand même fallu du temps pour me rendre compte :s

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Par défaut
    finalement c'est pas resolu car maintenant le script me donne le resultat que je veut (watchdog) quand je le lance en ligne de commande mais une fois je le met en crontab

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    20 14 * * * /opt/rational/clearcase/etc/dashboard/watchdog.sh > /var/adm/rational/clearcase/log/dashboard/watch.log
    il me trouve des PID que je trouve pas avec un ps -edf | grep PID

    c'est quoi ce truc

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Par défaut
    Quand le daemon est lancer ça marche bien.
    mais quand il est arreté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    diva{mbakhti}68: cat watch.log 
    26986 26989
    DASHBOARD alive at Thu May 7 14:44:00 MEST 2009
    diva{mbakhti}69: ps -edf | grep 26986
     mbakhti 27630 17948  0 14:44:53 pts/1    0:00 grep 26986
    diva{mbakhti}70: ps -edf | grep 26989
     mbakhti 27638 17948  0 14:45:05 pts/1    0:00 grep 26989
    Merci pour l'aide

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Le probleme de grep, c'est qu'il se voit dans la liste des processus. Il suffit de le virer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps -edf | grep  <pid> | grep -v grep
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  7. #7
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Il y a plus simple:


  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Par défaut
    Merci pour vos réponse mais le problème n'est toujours pas résolu :
    en effet je remarque que toujours en utilisant appelant le shell script directement du terminal

    #./watchdog.sh

    le résultat est correct.

    Mais avec le CRON

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     if [ -e "${PIDFILE}" ]; 
        then 
        	FIND_PROC=`cat ${PIDFILE}` ;
        else 
        	#FIND_PROC=`pgrep -f dashboard`;
    	 FIND_PROC=`ps -edf | grep dashboard | grep -v grep| awk '{print $2}'`;
     fi
    j'ai 4 pid qui sont stocker dans ma variable : FIND_PROC . et qui sont les pid successifs dans commande ps -edf , grep dashboard ,grep -v grep et awk '{print $2}' et çà me rend vraiment dingue a force :s

    Merci pour votre aide .

  9. #9
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Peux-tu coller ici ton script en entier, ou mieux un script minimum qui reproduise le meme probleme ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Par défaut
    Voici mon script en entier :

    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
     
    #!/bin/bash 
    DASHBOARD=/etc/init.d/dashboard
    PIDFILE=/opt/rational/clearcase/etc/dashboard/dashboard.pid
     
    # Find the pid of the process 
     
     if [ -e "${PIDFILE}" ]; 
        then 
        	FIND_PROC=`cat ${PIDFILE}` ;
        else 
        	#FIND_PROC=`pgrep -f dashboard`;
    	 FIND_PROC=`ps -edf | grep dashboard | grep -v grep| awk '{print $2}'`;
     fi	
     
    	echo ${FIND_PROC};
     
    # if FIND_PROC is empty, the process has died; restart it
     
    if [ -e ${FIND_PROC} ]; 
          then
          echo DASHBOARD failed at `date`
          ${DASHBOARD} start
          else
          echo DASHBOARD alive at `date`
     
    fi
    Merci encore

  11. #11
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Pourquoi as-tu commenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #FIND_PROC=`pgrep -f dashboard`;
    et continue-tu à utiliser "ps | grep | grep -v" ?

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Par défaut
    Parce que en fait avec Pgrep j'ai aussi un PID de même si rle processus n'est pas UP . donc j'ai mis le ps ... juste pour voir que le script me retourne les PID des commande et non pas ce qu'il doit retourné (juste le PID du processus dashboard).

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Par défaut Cron se forke
    Bonjour,
    Attention, une commande lancée en cron se forke:

    Si tu lance le script attente.sh suivant en cron:
    #!/bin/ksh
    sleep 120
    Tu récupère le résultat suivant en nombre de processus:
    =>236 /usr/sbin/cron
    ===>7401 sh -c /tmp/attente.sh
    =====>7402 /bin/ksh /tmp/attente.sh
    =======>7403 sleep 120
    Cron commence par lancer la commande via un sh -c, et ensuite elle se retrouve exécutée mais dans ton contexte de ton script (ksh dans cet exemple).

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

Discussions similaires

  1. Recuperation de pid
    Par cox38 dans le forum Linux
    Réponses: 10
    Dernier message: 04/07/2005, 07h43
  2. interface avec opengl sous solaris
    Par lizou03 dans le forum OpenGL
    Réponses: 1
    Dernier message: 12/04/2005, 13h35
  3. outil de modelisation merise sous SOLARIS
    Par j_siyar dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 08/04/2005, 15h50
  4. [Sybase]Problème avec le BCP sous Solaris
    Par sl dans le forum Sybase
    Réponses: 3
    Dernier message: 09/09/2004, 07h56
  5. [reseaux] récupération de pid
    Par eitrith dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 31/05/2004, 01h50

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