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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    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 éclairé
    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
    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.

Discussions similaires

  1. Réponses: 16
    Dernier message: 06/06/2008, 21h25
  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, 12h41
  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, 09h07
  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, 07h04
  5. Réponses: 1
    Dernier message: 28/04/2006, 15h25

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