Ankündigung

Einklappen
Keine Ankündigung bisher.

kurze frage zu screen in einem shell script

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • kurze frage zu screen in einem shell script

    wie komm ich aus einem screen prozess wieder raus den ich per shell script gestartet habe..mittels "screen -ad" im shell script scheint das ja nicht zu funktionieren

    mit dem shell script soll ein gameserver gestartet werden können, nachdem ich das verzeichniss gewechselt habe folgt dann

    Code:
    screen -dmS cod2am
    ./cod2_lnxded +set fs_game am +set dedicated 2 +set net_port 28960 +exec jg511_mod.cfg
    wenn die zweite zeile, also der start des servers ausgeführt wurde soll er wieder auf die shell zurückkehren und einen bestimmten text (der steht mit echo im shellscript) ausgeben.

    würde es reichen wenn ich der zeile
    Code:
    ./cod2_lnxded +set fs_game am +set dedicated 2 +set net_port 28960 +exec jg511_mod.cfg
    noch das & hinten anstelle damit es im hintegrund gestartet wird und auch da bleibt (eine anzeige is deshalb eigentlich nicht notwendig, weil die ereignisse vom game aus sowieso schon geloggt werden)

    schon ma thx für hilfe

    PS: Ganzes Script kann ich nicht posten, da ich auf arbeit sitz..


  • #2
    hat sich bereits erledigt, kann geclosed werden

    Kommentar


    • #3
      und was war jetzt die lösung?
      und warum startest du das ding im screen?

      Kommentar


      • #4
        ich habe im netz ein script gefunden welchem meinem recht ähnlich war...

        Code:
        #! /bin/sh 
        ######################################################### 
        # THIS FILE IS FOR STARTING AN Call of Duty 1.2 SERVER  # 
        ######################################################### 
        # Use at your Own Risk   !!!!!!!!!!!                    # 
        # You need screen installed on your server              # 
        ######################################################### 
        # Vars:                                                 # 
        #	G_USER		Username			#
        #       NAME            The Screen Name                 # 
        #       DESC            Server Desciption               # 
        #       PARAMS          Start Parameter		        # 
        #       DIR             HLDS Directory (absolut)        # 
        #       SCRIPT          Serverstart Script              # 
        #       DAEMON          Daemon	                        # 
        ######################################################### 
        # OPTIONS: (start|stop|restart|status)                         # 
        ######################################################### 
        
        ################## User ################################
        # Username unter dem der Server laufen soll
        # NICHT als root laufen lassen
        G_USER=games
        ################## Vars ################################# 
        # Screen NAME 
        # Attach Screen : # screen -r NAME 
        # Detach Screen : # [CTRL]+[A]; [D] 
        # Don't press [CTRL]+[C] it will terminate screen 
        NAME=extcod2
        ################## Server Description ################### 
        # Single Word           DESC=myserver 
        # Multiple Words        DESC="This is my Server" 
        #DESC="Call of Duty 2 eXtrem Mod Server" 
        ################## Parameter ############################ 
        # CAN USE: +servercfgfile server.cfg OR +exec server.cfg 
        PARAMS="+set fs_game extreme +set dedicated 2 +set net_port 28960 +exec server.cfg" 
        ################## Directory ############################ 
        # Your Path to cod Directory (absolute) 
        DIR=/srv/games/cod2
        ################## DAEMON ############################## 
        # You place your startscript here, normally hlds_run 
        SCRIPT=cod2_lnxded 
        ######################################################## 
        ####    DONT CHANGE ANYTHINK BELOW THIS LINE ! ! !  #### 
        ######################################################## 
        
        DAEMON=$DIR/$SCRIPT 
        
        case "$1" in
         start)
            if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
               then
               echo "Server läuft bereits!"
            else
               echo "Starte Server... "
               su $G_USER -c "cd $DIR; screen -d -m -S $NAME $DAEMON $PARAMS"
               echo "...done."
            fi
            ;;
        
         stop)
            if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
               then
               echo "Stoppe Server... "
               kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
               echo " ... done."
            else
               echo "Kein laufenden Server gefunden!"
            fi
            ;;
        
         restart)
            if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
               then
               echo "Stoppe Server... "
               kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
               echo " ... done."
            else
               echo -n "Kein laufenden Server gefunden!"
            fi
        
            echo "Starte Server..."
            su $G_USER -c "cd $DIR; screen -d -m -S $NAME $DAEMON $PARAMS"
            echo " ... done."
            ;;
        
         status)
            ps aux | grep -v grep | grep cod > /dev/null
            CHECK=$?
            [ $CHECK -eq 0 ] && echo "$DESC ist online" || echo "$DESC ist offline"
            ;;
         *)
        
           echo "Benutze: $0 {start|stop|restart|status}" 
           exit 1 
           ;; 
        esac 
        
        exit 0
        in screen muss es laufen da sonst der server zu is wenn ich die verbindung schließe...

        ..der unterschied is beim aufruf von "screen -dmS" zu sehen :wink:

        Kommentar


        • #5
          sowas halte ich für die deutlich bessere lösung:

          Code:
          nohup ./cod2_lnxded +set fs_game am +set dedicated 2 +set net_port 28960 +exec jg511_mod.cfg &
          Kurz erklärt:
          nohup: Ein Kommando immun gegen Aufhängen laufen lassen, mit Ausgabe in ein Nicht-Terminal (manpage o-ton *G*)
          &: In den Hintergrund schicken
          PHP & Linux-Support uvm...

          Kommentar

          Lädt...
          X