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

Linux Discussion :

Démarrer et arrêter un processus


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Par défaut Démarrer et arrêter un processus
    Je souhaite faire un .sh afin de lancer mon programme en tache de fond et de l'arreter (sous SunOS).

    Voici ce que j'ai réussi à faire jusqu'à présent :

    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
    #!/bin/sh
    #set -x		# pour debugger ce script
     
    USAGE="Usage: `basename $0` {start|stop} [1-20]"
     
     
    #2 arguments
    if [ $# != 2 ]; then
    	echo $USAGE
    	exit 127
    fi
     
    PID=`ps -efo pid,args | grep "hosaflow" | grep -v grep  | awk '{print $1}' | tr '\n' ' '`
     
    case $1 in
    start)
    	if [ $# = 2 ]; then
    		echo "Demarrage du processus ${MODULE}"
    		nohup hosaflow $2 2>> /users/sbulin/wmq/hosaduplic/temp/hosaflow.log &
    	else
    		echo $USAGE
    		exit 127
    	fi
    	;;
     
    stop)
    	if [ "$PID" != "" ]; then
    		echo "Arret du processus : $PID"
    		echo $PID
    #		kill -INT $PID
    	else
    		echo "Aucun processus"
    	fi
    	;;
    *)
    	echo $USAGE
    	exit 127
    	;;
    esac
    J'aimerai savoir pourquoi j'ai toujours deux valeurs dans ma variable PID : une qui correspond à mon processus hosaflow, et l'autre à rien...

  2. #2
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par kendras
    J'aimerai savoir pourquoi j'ai toujours deux valeurs dans ma variable PID : une qui correspond à mon processus hosaflow, et l'autre à rien...
    Probablement parce que, comme tu as l'air de t'y attendre, vu le tr final de ton affectation à PID, le ps retourne plusieurs valeurs correspondantes ... regarde à la main ce que donne déjà un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps -efo pid,args | grep "hosaflow" | grep -v grep | awk '{ print }'
    Je ne serais pas surpris si la deuxième valeur correspondait à l'appel à awk, par exemple.

    Sinon, il y a peut être moyen de construire la recherche de façon plus discriminante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PID=$( ps -o pid,args | grep '\bhosaflow\b' | sed 's/^ *//g' | cut -f 1 -d " " )
    Ce n'est peut être pas mieux, mais ça mérite d'être essayé ...

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

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

    Pourquoi pas comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                    # ...
    		echo "Demarrage du processus ${MODULE}"
    		nohup hosaflow $2 2>> /users/sbulin/wmq/hosaduplic/temp/hosaflow.log &
     
                    # $! contient le PID du dernier programme execute.
    		echo $! > /var/run/hosaflow.pid
                    # ...
    au démarrage et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                    # ...
    		echo "Arret du processus : $PID"
    		echo `cat /var/run/hosaflow.pid`
    #		kill -INT `cat /var/run/hosaflow.pid`
                    # Efface le fichier contenant le PID
                    rm -f /var/run/hosaflow.pid
                    # ...
    pour l'arrêt. En effaçant le fichier à l'arrêt, tu peux ainsi tester si ton programme fonctionne en testant l'existance de ce fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if [ -f /var/run/hosaflow.pid ]; then
            echo "Le programme fonctionne deja"
    fi

Discussions similaires

  1. [FLASH 8] Transformer un 1234 en 1 234
    Par baleiney dans le forum Flash
    Réponses: 16
    Dernier message: 13/07/2006, 12h46
  2. Réponses: 4
    Dernier message: 15/06/2006, 13h31
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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