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 :

[Bash] netcat impossible à tuer


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
    Mai 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Par défaut [Bash] netcat impossible à tuer
    Bonjour,

    Je fais un petit client/serveur avec netcat, le serveur principal lance un serveur secondaire netcat en arriere plan qui est censé se fermer après un certain timeout.

    J'arrive a faire fonctionner le timeout, le serveur secondaire se termine mais j'ai toujours netcat qui tourne.

    code du serveur secondaire :

    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
     
    #!/bin/bash
     
    port=$2
    exe="services/"$1
     
    export PID=$$
     
    export TIMEOUT=10
    (sleep $TIMEOUT; kill -9 $PID)&
    TPID=$!
     
    while true ; do
    	netcat -l -p $port -e $exe
    	kill -9 $TPID
    	(sleep $TIMEOUT; kill -9 $PID)&
    	TPID=$!
    done
    La boucle while est bloquée pendant l'execution de netcat, netcat se ferme après la connexion d'un client, tant qu'un client se connecte avant 10s le timeout est relancé (ainsi que netcat)
    lorsque le timeout est terminé, le script s'arrete bien mais j'ai toujours un processus netcat qui tourne en arrière plan et sur lequel je peux me connecter.

    le $exe a cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while read cmd ;do
      #blablabla
    done
    Comment se fait-il que netcat ne s'arrete pas avec le serveur lors du "kill -9 $PID" ???

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 31
    Par défaut
    Bonjour,

    petite remarque: Pourquoi pas un "kill -15" ? c'est un kill "plus doux", mais rien à voir avec ton problème...

    Sinon, lorque on interrompt un processus, un signal circule pour tous les processus fils indiquant l'interruption du père(je ne sais pas exactement dire quel signal circule d'ailleurs! SIGTERM=le fameux "-15" ? ).

    Pour continuer, le fameux signal d'interruption du processus père peut être ignorer par le processus fils. Ce qui semble être le cas de netcat. Et ce qui est le cas plus géneralement des processus de lecture/écriture.

    J'espère ne pas avoir dit trop de bétise.

Discussions similaires

  1. Tuer des processus via un script bash
    Par RTK45 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 18/04/2013, 23h16
  2. Impossible d'exécuter une commande avec su dans un script bash
    Par koshieDotFr dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 18/12/2012, 13h47
  3. [Process] Impossible à tuer ?
    Par jenesuispasunrobot dans le forum C#
    Réponses: 0
    Dernier message: 06/04/2009, 16h59
  4. (Bash) Impossible d'utiliser Getopts ?
    Par muse19 dans le forum Linux
    Réponses: 9
    Dernier message: 11/09/2007, 17h07
  5. [ArchiveBuilder][JavaMail] exécution impossible...
    Par Gorthal dans le forum JBuilder
    Réponses: 7
    Dernier message: 10/01/2003, 09h12

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