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 :

Lancer une application en tache de fond


Sujet :

Administration système

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Points : 36
    Points
    36
    Par défaut Lancer une application en tache de fond
    Bonjour à tous.
    Alors voila j'arrive à lancer une application java via SSH sur un serveur Linux redhad. Je lance cette application (un serveur socket en Java) comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -jar monServer.jar &
    Mais pour que le serveur socket marche il faut que je fasse :
    Par contre lorsque je quitte mon client SSH (putty) le serveur socket s'arrête.
    Lorsque je fais Le serveur ne marche socket plus ... il faut que je fasse un fg 1 ...
    Avez-vous une idée pour lancer cette application en tache de fond afin qu'elle fonctionne même si je quitte mon client SSH ?
    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Points : 36
    Points
    36
    Par défaut
    J'ai trouvé comment lancé le serveur avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/bin/nohup java -jar MonServer.jar &
    Et j'y accède avec
    Le problème c'est que je sais pas comment stopper mon application.
    Avez-vous une idée ?
    Merci

  3. #3
    Membre confirmé Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    Points : 477
    Points
    477
    Par défaut
    Salut,

    Tu peux essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nohup java -jar MonServer.jar 2&>1 1&> MonServer.log &
    echo $! > MonServer.pid
    kill `cat MonServer.pid`
    Voilà comme ça tes sorties ne sont pas perdues et tu récupères droits derrière le PID de ton processus ($!) tu mets ça dans un fichier et tu peux tuer ton truc en lisant la valeur dans le fichier.
    Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Points : 36
    Points
    36
    Par défaut
    Merci pour votre réponse.
    En fait mon application est déjà lancée avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/bin/nohup java -jar MonServer.jar &
    Il y'a un fichier nohup.out qui s'est crée dans le dossier contenant MonServer.jar
    dois-je le supprimer ?
    Dois-je faire un
    Merci

  5. #5
    Membre confirmé Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    Points : 477
    Points
    477
    Par défaut
    Chez moi il ne créé aucun fichier, mais la page de man indique que la commande nohup dépend de l'interpréteur de commande et peut varier. Mais une recherche indique que nohup peut créer un fichier nohup.out ou $HOME/nohup.out qui contient la sortie standard du programme : http://www.ss64.com/bash/nohup.html.

    Maintenant ce qui est important c'est de garder le PID du programme lancé. Dans bash, la variable $! contient le PID du dernier programme lancé. C'est pourquoi avant d'executer une autre commande, après avoir lancé "MonServer", il faut tout de suite faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $! > MonServer.pid
    Ainsi le PID du programme est stocké dans le fichier "MonServer.pid".
    Avec ça, il est très facile de stoper le programme. En faisant :
    Tu auras le PID du programme lancé, maintenant pour utiliser cette valeur tu utilises les backquotes : http://www.faqs.org/docs/abs/HTML/commandsub.html.

    Les backquotes permettent de réassigner la sortie d'une commande à un autre contexte, donc en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    kill `cat MonServer.pid`
    Tu utilises la valeur contenue dans le fichier MonServer.pid comme argument à la commande kill. Tu pourrais aussi faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PID_DE_MON_SERVER=`cat MonServeur.pid`
    kill $PID_DE_MON_SERVER
    Comme ça tu peux réutiliser le PID plus tard (pour contrôler si le programme est bien arrêter par exemple).

    Le PID c'est le Process IDendification un numéro attribué par le noyau à chaque processus sur le système. À partir du PID, on peut accéder à beaucoup d'informations sur un programme en utilisant par exemple /proc/$PID/ :
    http://ftp.traduc.org/doc-vf/gazette...5/lg115-E.html.
    Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Points : 36
    Points
    36
    Par défaut
    Merci pour vos réponse mais j'ai un problème.
    J'ai supprimé le fichier nohup.out pensant que ça allait arrêté mon serveur mais il est toujours en route.
    Alors lorsque je fait un tail -f nohup.out j'arrive plus à accéder à MonServer.
    Comment puis-je faire pour arrêter cette application en tache de fond ?
    Merci

  7. #7
    Membre confirmé Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    Points : 477
    Points
    477
    Par défaut
    Et ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    kill `ps -e | grep MonServer | awk '{print $1;}'`
    Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/

Discussions similaires

  1. Lancer une application java en tache de fond
    Par nanu dans le forum Langage
    Réponses: 7
    Dernier message: 30/12/2008, 09h27
  2. Lancer une application en fond.
    Par palmitoto dans le forum C++
    Réponses: 3
    Dernier message: 21/07/2008, 02h37
  3. lancer une appli en tache de fond
    Par Guig74 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 07/12/2007, 11h46
  4. Faire tourner une Application en Taches de fond
    Par ArkAng3 dans le forum MFC
    Réponses: 3
    Dernier message: 26/08/2005, 14h06
  5. [application tache de fond] lancer une application
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 5
    Dernier message: 25/03/2005, 11h13

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