UTzone.de

UTzone.de (https://www.utzone.de/forum/index.php)
-   Unix / Linux (https://www.utzone.de/forum/forumdisplay.php?f=48)
-   -   GameCreate, Shell sh, Start und grep Problem (https://www.utzone.de/forum/showthread.php?t=2550)

Donzi 01.02.2012 18:55

GameCreate, Shell sh, Start und grep Problem
 
Gamecreate gibt vor:

Zitat:

Wed Feb 1 19:42:42 2012: Launching process: /home/xxx/GameCreate-5212/minecraft/minecraft_launch.x86 25565 -Xms512M -Xmx1024M from directory /home/xxx/GameCreate-5212/minecraft
Raus kommt in der Prozessliste:
Zitat:

Befehl /usr/bin/SCREEN -m -D -A -S "Minecraft Server" /home/xxx/GameCreate-5212/minecraft/minecraft_launch.x86 25565 -Xms512M -Xmx1024M
GC brauch nen Pidfile des Screens.....sonst startete es den MinecraftServer ständig neu

Ich fummel schon den halben Tag rum, mal gehts, dann wieder nicht....




- GC startet MinecraftServer
- der MinecraftServer legt eine leere Datei an: server.log.lck
- per shell

Code:

ps -ef | grep -v grep | grep 'SCREEN -m -D -A -S "Minecraft Server"' | grep 25565 |awk ' { print $2 }' > port25565.pid
klappt alles.




Da aber keine minecraft_launch.x86 mitgeliefert wird, steh ich auf eigenen Füssen und komm nich weiter :/

minecraft_launch.x86
Code:

PIDFILE=port"$1".pid
java $2 $3 -jar craftbukkit-1.1.jar nogui $1
sleep 1
ps -ef | grep -v grep | grep 'SCREEN -m -D -A -S "Minecraft Server"' | grep 25565 |awk ' { print $2 }' > $PIDFILE

Ich hatte auch schon sowas
Code:

java $2 $3 -jar craftbukkit-1.1.jar nogui $1
sleep 2

PIDFILE=port"$1".pid
pid=`cat server.log.lck`
if [ ! -n "$pid" ]; then

#pid=`ps -ef |grep "java $2 $3 -jar craftbukkit-1.1.jar nogui $1"|awk -F" " -v game=craftbukkit-1.1.jar 'BEGIN {status=1} ; $8 == game { print $2 } ; END {exit status}'`
pid=`ps -ef|grep -v grep|grep SCREEN|grep "java $2 $3 -jar craftbukkit-1.1.jar nogui $1"|awk '{print $2}'`
touch $PIDFILE
echo ${pid} > $PIDFILE
exit
fi

Das Pidfile mit den Inhalt des Screen-PID´s wird nicht angelegt :/

FYI
./minecraft_launch.x86 25565 -Xms512M -Xmx1024M
------------------------$1------$2---------$3


Ich geh erstma ins Training, also lasst Euch Zeit ;)

jeppo 01.02.2012 22:09

Sry kann ich erst Morgen abend untersuchen hab nur handy hier

jeppo 02.02.2012 17:48

Code:

java -Xms32M -Xmx512M -jar minecraft_server.jar nogui & echo $! > port"$1".pid

in der Variablen $! wird die pid des letzten gestarteten hintergrund jobs gespeichert
mit & befehl in den hintergrund schicken (sollte mann in scripten sowiso mit programmen machen bei denen mann nicht weis ob sie die ein ausgabe wieder freigeben)
dann mit echo $! die pid auslesen und mit > in pidfile speichern

maln claim abstecken

Donzi 02.02.2012 20:51

den Pid vom prozess, ja kein prob. ich brauch den Pid vom Screen :(

also muss ich den Screen grep'en bekomm aber keine ausgabe :(

jeppo 02.02.2012 21:20

Ka ob ich dich richtig verstanden habe aber adde im ersten minecraft_launch.x86 code in der java zeile nen &

Server laufen meist durch und geben die konsole nicht frei und dann werden die zeilen nach dem server start erst abgearbeitet wenn dieser beendet wird mit & am ende schickste den befehl in den hintergrund und die nächsten zeilen werden sofort abgearbeitet

und gib sleep mehr zeit

Donzi 02.02.2012 22:28

du bist einen schritt hintendran.

ich starte per weboberfläche
Code:

Wed Feb 1 19:42:42 2012: Launching process: /home/xxx/GameCreate-5212/minecraft/minecraft_launch.x86 25565 -Xms512M -Xmx1024M from directory /home/xxx/GameCreate-5212/minecraft
Das Ding macht nen Screen auf und die screenpid brauch ich.

Daher ja auch

Code:

ps -ef | grep -v grep | grep 'SCREEN -m -D -A -S "Minecraft Server"' | grep 25565 |awk ' { print $2 }' > $PIDFILE
aber es wird nicht die Pid geschrieben :(

------------------

Code:

# Server is not running start the server.
        if [ -x $STEAM/$DAEMON ]; then
            echo "Starting $TITLE - $LONGNAME - $CLIENT"
            echo "Server IP: $IP"
            echo "Server port: $PORT"
            echo "Server size: $SIZE players"
            CD $STEAM
            $INTERFACE $STEAM/$DAEMON $OPTS
            # Prevent race condition on SMP kernels
            sleep 1
            # Find and write current process id of the screen process
            ps -ef | grep SCREEN | grep "$NAME" | grep -v grep | awk '{ print $2}' > $STEAM/$GAME/$NAME-screen.pid
            echo "$TITLE screen process ID written to $STEAM/$GAME/$NAME-screen.pid"
            echo "$TITLE server process ID written to $STEAM/$GAME/$NAME.pid"

            echo "$TITLE started."

ich lieg eigentlich garnicht falsch, wenn ich mir andere scripte ansehe, mhhhhhhh

jeppo 03.02.2012 16:29

Code:

ps -ef | grep -v grep | grep 'SCREEN -m -D -A -S Minecraft Server' | grep 25565 |awk ' { print $2 }' > $PIDFILE
eine alternative wäre
Code:

screen -list | grep "Minecraft Server" | awk '{ print $1 }' | awk -v 'FS=.' '{print $1}'  > $PIDFILE
wenn das nicht funzt biite ausgabe von
Code:

ps -ef | grep SCREEN
posten

jeppo 09.02.2012 10:06

funzt das nun oder nicht?

Donzi 09.02.2012 10:31

kam abends nicht zu, hoffe heut abend/nacht

Donzi 10.02.2012 14:39

Code:

ps -ef | grep -v grep | grep 'SCREEN -m -D -A -S Minecraft Server' | grep 25565 |awk ' { print $2 }' > $PIDFILE
Launching process: /home/donzi/GameCreate-5212/minecraft/minecraft_launch.x86 25565 -Xms512M -Xmx1024M from directory /home/donzi/GameCreate-5212/minecraft
Fri Feb 10 15:33:58 2012: Received PING request
Fri Feb 10 15:34:01 2012: Process 3252 was confirmed by master
Fri Feb 10 15:34:13 2012: ** Stop GameCreate Booking: ID 9711366 **
Fri Feb 10 15:34:13 2012: Could not open pid-file /home/donzi/GameCreate-5212/minecraft/port25565.pid
-----------

eine alternative wäre
Code:

screen -list | grep "Minecraft Server" | awk '{ print $1 }' | awk -v 'FS=.' '{print $1}'  > $PIDFILE
Fri Feb 10 15:35:32 2012: Launching process: /home/donzi/GameCreate-5212/minecraft/minecraft_launch.x86 25565 -Xms512M -Xmx1024M from directory /home/donzi/GameCreate-5212/minecraft
Fri Feb 10 15:35:35 2012: Process 3599 was confirmed by master
Fri Feb 10 15:35:35 2012: Sending PONG, waiting for response
Fri Feb 10 15:35:38 2012: Received PONG response
Fri Feb 10 15:35:50 2012: ** Stop GameCreate Booking: ID 9711366 **
Fri Feb 10 15:35:50 2012: Could not open pid-file /home/donzi/GameCreate-5212/minecraft/port25565.pid

----------
wenn das nicht funzt biite ausgabe von
Code:

ps -ef | grep SCREEN
posten

Code:

donzi@babe2676:~/GameCreate-5212/minecraft$ ps -ef | grep SCREEN
donzi    3781  2121  0 15:37 ?        00:00:00 /usr/bin/SCREEN -m -D -A -S "Minecraft Server" /home/donzi/GameCreate-5212/minecraft/minecraft_launch.x86 25565 -Xms512M -Xmx1024M
donzi    3833  3071  0 15:37 pts/1    00:00:00 grep SCREEN
donzi@babe2676:~/GameCreate-5212/minecraft$

minecraft_launch.x86
Code:

java $2 $3 -jar craftbukkit-1.1.jar nogui $1
sleep2
#ps -ef | grep SCREEN | grep 'SCREEN -m -D -A -S "Minecraft Server"' | grep $1 | grep -v grep | awk ' { print $2 }' > port"$1".pid
#ps -ef | grep -v grep | grep 'SCREEN -m -D -A -S Minecraft Server' | grep $1 |awk ' { print $2 }' > port"$1".pid
screen -list | grep "Minecraft Server" | awk '{ print $1 }' | awk -v 'FS=.' '{print $1}'  > port"$1".pid
fi



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2020, vBulletin Solutions, Inc.
CopyRight-Licence © 2000 - 2018 by UTzone.de