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 :

récupérer le PID d'un prg (pas de PS ni de pgrep)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut récupérer le PID d'un prg (pas de PS ni de pgrep)
    Bonjour,
    j'aimerai récupérer PID d'un programme sachant le pgrep et le "ps -ef | grep" ne me sont pas utile, car l'expression de filtrage est assez long , elle dépasse celle afficher par le ps ou le pgrep .

    du coup je voudrai enregister le PID dans un fichier et le récupérer pour les operation de monitoring .


    Merci d'avance

  2. #2
    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 : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    en ksh ce serait un truc du style dans l'hypothèse ou tu gere le lancement de ton appli.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #!/bin/ksh
     
    myprog &
    echo "le PID de myprog est:" $! " Mon pid est " $$
    http://www.versageek.com/ksh_munix.html

  3. #3
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    il ya pas moyen de l'ecrire directement dans un fichier du genre


    java -jar aaa.jar
    echo $!> aaa.pid

    ?
    j'ai essayer mais ça marche pas

  4. #4
    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 : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Normal, tu ne le lance pas en tache de fond.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java -jar aaa.jar 
    echo $!> aaa.pid
    pour le lancer en tache de fond il faut ajouter '&' a la fin de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java -jar aaa.jar &
    echo $!> aaa.pid

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    Merci pour les réponse

    ça marcher on utilisant $$ au lieu de $!
    java -jar aaa.jar &
    echo $$> aaa.pid
    du coup je comprend pas la différence (entre $! et $$) je précise je suis sur un solaris

  6. #6
    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 : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Alors quand tu as:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #!/bin/ksh
     
    java -jar aaa.jar
    tu lance un script qui va tout executer de lui même sur son PID.

    Alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #!/bin/ksh
     
    java -jar aaa.jar &
    Ton script va lancer un autre process en tache de fond. et continuer son execution.

    Si ta phase de creation de jar est assez longue tu devrais pouvoir voir 1 pid dans le premier cas et 2 PID (celui du script et celui de java) dans le second.

  7. #7
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    pio

    moi qui croyait que j'ai résolu le prb
    alors le $$ c'est pour le PID du script et $! le PID du prg java dans mon cas


    effectivement le PID que j'ai récupéré est différent de celui du programme

    sauf que moi je suis obliger de le lancer en tache de fond

    et pi en bash

    Je deteste les limitations

  8. #8
    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 : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    en bash sur sun, prend plutot ksh.

    et en quoi c'est un limitation de pouvoir lancer un programme en tache de fond?

  9. #9
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    la limitation c'est sur le bash "pour que ça soit portable va comprendre pourquoi"


    le prg doit être en tache de fond et cel ne me permet pas de récupérer le PID par la manouvre suivante :
    java -jar aaa.jar &
    echo $!> aaa.pid
    car le aaa.jar ne se lance pas rapidement du coup j'ai rine dans mon fichier .pid

  10. #10
    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 : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    si tu veux etre portable il vaux mieux sh tout court

    enfin ça dépend si tu vise Linux ou d'autres Unix

  11. #11
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    disant que je doit inclure le HP , AIX ...etc et dans le s doc de spec c'est le bash


    mais je n'arrive toujours pas à récupérer le PID du prg java , et par le ksh et par le bash car echo $!> aaa.pid ne donne rien vu que au moment de son exécution le programme java n'est pas lancé et le script n'est pas fini (script assez long)

  12. #12
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    y-a-t-il pas un moyen d'élargir la chaine de filtrage de pgrep

    je m'explique
    je lance mon prg dans un répertoire avec un pwd assez long et je fourni un script de monitoring qui permettra de savoir si le programme java est en exécution .


    imaginez que mon programme java "aaa.jar" se trouve dans :

    java -jar aaa/bbb/ccc/ddd/eee/fff/jjj/hhh/iii/ggg/kkk/lll/mmm/nnn/oooooooooooo/aaa.jar


    donc pour récuprer le pid j'utilise
    pgrep -f (.*)oooooooooooo(.*)aaa(.*)
    malheuresement il y que le dernier nom du repertoire qui diffrenecie sauf que pgrep ne permet de filtrer que sur les 15 premier caractère

  13. #13
    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 : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    et comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #!/bin/ksh
     
    java -jar aaa.jar &
    PROGPID=$!
     
    echo ${PROGPID} > aaa.pid
    tu peux eventuellement ajouter du debug avec set -x

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #!/bin/ksh
     
    set -x 
    java -jar aaa.jar &
    PROGPID=$!
    set +x
     
     
    echo ${PROGPID} > aaa.pid
    Autrement il doit y avoir moyen de le faire generer par le jar lui même non?

  14. #14
    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 : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    peu etre avec le ps de l'université de berkeley mais il n'est pas standard

    sur sun il est sous /usr/ucb/bin si je me souviens.

    un truc du stype /usr/ucb/bin/ps -auxww

  15. #15
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    aucune des solution proposer n'as marché ....

    pour le debug la variabel $! et vide
    c' est quand même bizar ...

  16. #16
    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 : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Citation Envoyé par djam84 Voir le message
    aucune des solution proposer n'as marché ....

    pour le debug la variabel $! et vide
    c' est quand même bizar ...
    ton programme se lance bien en tache de fond, vois tu son PID grace a prstat ou autre?

  17. #17
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    oui mon programe se lance parfaitement

  18. #18
    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 : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    je ne vois pas.

    peux tu montrer la dernière version de ton script ?

  19. #19
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    Merci de me demander le code si il y a besoin

    le lancement est donné en gras
    quand je remplace le '$!' par '$$' je n'obtiens pas le bonne pid

  20. #20
    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 : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    pourquoi charge tu $HOME/.profile?

    pourquoi des parenthèses ?

    je ferais plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    . $HOME/.profile && \
    $JAVA6_HOME/bin/java -Xmx1024m -jar Toto.jar             &
    PID=$!
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (. $HOME/.profile && \
    $JAVA6_HOME/bin/java -Xmx1024m -jar Toto.jar             &)
    PID=$!

    la différence entre && et ";" est que le statut de retour du chargement du .profile sera vérifié.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. récupérer le PID du processus que l'on crée
    Par doukem dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 03/08/2007, 10h58
  2. Réponses: 2
    Dernier message: 18/01/2007, 09h48
  3. lancer une commande et récupérer son pid en C
    Par klipper dans le forum Linux
    Réponses: 18
    Dernier message: 05/01/2007, 17h59
  4. Récupérer tout ce qui n'est pas dans la base
    Par SnakeBoudoir dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/11/2006, 19h18
  5. Réponses: 1
    Dernier message: 29/07/2006, 10h08

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