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 :

Script Shell pour relancer un Serveur.


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut Script Shell pour relancer un Serveur.
    J'ai un script php ServerTest.php (ex : php ServerTest.php 127.0.0.1 5354)

    qui appel un fichier S3DServer_script ou il y a des commandes stop et start qui permettent d'arreter et de relancer le serveur.

    Le problème est que j'arrive a relancer le serveur. mais que je ne peux pas lancer php ServerTest.php 127.0.0.1 5354 plusieurs fois de suite.
    ex 1er fois : reponse
     Redemarrage du serveur

    puis 2eme fois (donc là le serveur est relancé)
    Il n'y a plus aucune action juste écrit ça : 
    alors que normalement je peux utiliser ce fichier meme s'il est lancé.


    ServerTest.php :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <?php
    include_once("S3DAdmin.php");
     
    if ($_SERVER["argc"]>2)
    {    
        $ServerAddress = $_SERVER["argv"][1] ;
        $ServerPort    = $_SERVER["argv"][2] ;
     
        $aResult = TestS3DServer ( $ServerAddress ,  $ServerPort);
     
        if ( $aResult["result"] == "success")
        {
     
            echo "Server took "         . $aResult["ServerDelay"    ]  ." sec to answer.\n\n";                    
            echo "Connection count: "   . $aResult["ConnectionCount"] ."\n";
            echo "User count\t: "       . $aResult["UserCount"      ] ."\n";
            echo "Commands parsed\t: "  . $aResult["CommandParsed"  ] ."\n";
            echo "Send (Bytes)\t: "     . $aResult["SendBytes"      ] ."\n";
            echo "Received (Bytes): "   . $aResult["ReceivedBytes"  ] ."\n";
            echo "NetworkLoop\t: "      . $aResult["NetworkLoop"    ] ."\n";
     
    		if($aResult["ServerDelay"]>10)
    		{
    		echo "Temps de réponse supérieur à 10s : Redemarrage du serveur		\n";
    			$cmd1="S3DServer_script stop &";
    			shell_exec($cmd1);
    			$cmd2="S3DServer_script start &";
    			shell_exec($cmd2);
    			echo "Serveur 3D redemarré \n";
    		    exit;
    		}
     
        }
        else
         {
            echo "Test has failed : " . $aResult ["result"] ."\n";
    		echo "Aucune reponse du serveur : Redemarrage ...  \n";
    			$cmd1="S3DServer_script stop &";
    			shell_exec($cmd1);
    			$cmd2="S3DServer_script start &";
    			shell_exec($cmd2);
     
    		echo "Serveur 3D redemarré \n";
    		exit;
         }
     
    }
    else if ($_SERVER["argc"]>0)
    {
        echo "Usage: php  ". $_SERVER["argv"][0]." Address Port\n";
    }
    else 
    {
        echo "Usage: php  ServerTest.php Address Port\n";
    }
     
     
    ?>

    Methodes de S3DServer_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
    23
    24
    25
    26
     stop)
    		if [ -e $S3DServerLife ]; then
    			echo "Stopping S3DServer Advanced 1.5.1 for Linux"
    			if ( kill -TERM `cat $S3DServerLife` ); then
    				for c in $(seq 1 5); do
    					if [ -e $S3DServerLife ]; then
    						echo -n "."
    						sleep 1
    					else
                            break
                        fi
    				done
    			fi
    			if [ -e $S3DServerLife ]; then
    				echo "S3DServer fail to stop properly - killing"
    				kill -KILL `cat $S3DServerLife`
    				rm $S3DServerLife
    				sleep 5
    			else
    				echo "done"
    			fi
    		else
    			echo "S3DServer is not running."
    			exit 7
    		fi
    	;;


    Et voici ma 2eme question, le script est bien exécuté, avec le stop pou le start fonctionnent mais par exemple je ne vois pas les textes echo "S3DServer fail to stop properly - killing" ou tout les autres echo dans le start et le stop alors que quand je les éxécute en SHELL directement je les vois.

    Bon je ne sais pas si c'est clair et si quelqu'un aura la force de lire et de m'aider mais je vous remerci d'avance.

  2. #2
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut
    Pour etre plus précis et court : je lance mon fichier php ServerTest.php (ex : php ServerTest.php 127.0.0.1 5354) qui est censé relancer le serveur (il fait un stop et un start du serveur.

    Si j'exécute mon fichier alors que le serveur n'a pas repondu ou n'est
    lancé : le serveur est bien relancé. mais si je le relance immédiatement alors qu'il vient d'être lancé cela ne fait rien :



    root@X:/usr/local/sbin# php ServerTest.php 192.168.26.X 8080
    Test has failed : socket_connect() failed.
    Reason: () Connection refused
    Aucune reponse du serveur : Redemarrage ...



    [4]+ Stopped php ServerTest.php 192.168.26.170 8080
    root@kidnet-3d:/usr/local/sbin# ps
    PID TTY TIME CMD
    31812 pts/0 00:00:00 su
    31813 pts/0 00:00:00 bash
    31835 pts/0 00:00:00 php
    31838 pts/0 00:00:00 sh <defunct>
    31843 pts/0 00:00:00 php
    31855 pts/0 00:00:00 php
    31978 pts/0 00:00:00 php
    31981 pts/0 00:00:00 sh <defunct>
    31983 pts/0 00:00:00 S3DServer-1.5.1
    31986 pts/0 00:00:00 ps
    root@X:/usr/local/sbin# php ServerTest.php 192.168.26.X 8080
    


    comme vous le voyez la 2eme fois il affiche juste 
    alors qu'il devrait afficher le temps de réponse du serveur.

  3. #3
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Bonjour,

    Ton message est peu clair, ou alors je ne comprends pas bien. Déjà, je ne connais pas le PHP (honte à moi). Même si ce langage semble facile, il y a certainement des nuances auxquelles il faut prêter attention. Et puis tu exposes ton problème entier et je me perds un peu dans les détails.

    À la place, si tu pouvais montrer un mini-programme tout simple reproduisant ce problème (et que peut-être tu arriverais à résoudre seul), alors cela sautera sans doute aux yeux d'un des lecteurs.

    Je ne te jette pas la pierre, je te dis juste ce qui m'empêche de répondre...
    Un problème bien posé est déjà résolu (H. Bergson).

Discussions similaires

  1. Réponses: 16
    Dernier message: 06/06/2008, 22h25
  2. Script shell pour modifier plusieurs fichiers
    Par julio_097 dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 03/10/2006, 13h41
  3. Script shell pour persister les variables exportées
    Par Giovanny Temgoua dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 03/10/2006, 10h07
  4. [GML] Scripts shell pour extraire des données d'Oracle
    Par diamonds dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 28/09/2006, 08h04
  5. Réponses: 1
    Dernier message: 28/04/2006, 16h25

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