Hallo Zusammen!
Ich bin neu in diesem Forum und habe sogleich ein Problem, welches auf eine baldige Lösung hofft.
Zu allererst möchte ich klar stellen, es geht um ein Minecraft-Server-Startskript, wenn das eine Rolle spielt.
Jedenfalls habe ich eine while-loop eingebaut, damit, falls der Server gestoppt wird nach 'ner kurzen Zeit auch wieder automatisch startet. Dazu will ich den Server in einem Screen starten, damit ich selbst wenn PuttY mal ausfällt später wieder darauf zugreifen kann. Hier ist nun das erste Problem wenn ich jetzt hypothetisch gesehen, das in mein Skript reinschreiben:
Würde das Skript sofort wieder von vorne Anfangen, da nicht abgewartet wird, bis der Screen Prozess terminiert wurde.
Dazu habe ich mich erkundigt und folgenden Befehl in Betracht gezogen:
Da dadurch aber ein Child von der Shell beansprucht, versuchte ich mein Glück mit einer Schleife.
Dadurch, dass solange überprüft wird, bis der Prozess terminiert wurde (==0) sollte es eig. funktionieren, tut es jedoch nicht.
P.S. : Ich bin mir bewusst, dass ich mich ziemlich schlecht hiermit auskenne, aber jeder hat mal klein angefangen. Kritik ist erwünscht.
Ich wäre sehr dankbar über produktiven Antworten, ich bedanke mich schonmal im Vorraus
MoD2Cody
Ich bin neu in diesem Forum und habe sogleich ein Problem, welches auf eine baldige Lösung hofft.
Zu allererst möchte ich klar stellen, es geht um ein Minecraft-Server-Startskript, wenn das eine Rolle spielt.
Jedenfalls habe ich eine while-loop eingebaut, damit, falls der Server gestoppt wird nach 'ner kurzen Zeit auch wieder automatisch startet. Dazu will ich den Server in einem Screen starten, damit ich selbst wenn PuttY mal ausfällt später wieder darauf zugreifen kann. Hier ist nun das erste Problem wenn ich jetzt hypothetisch gesehen, das in mein Skript reinschreiben:
Code:
#!/bin/bash
cd "/home/minecraft"
while true; do
sleep 3
echo "*** Das Starten des Minecraft-Servers beginnt!"
echo "*** Starte MoD-Craft mit dem Screen 'craftbukkit'"
screen -L -A -m -d -S craftbukkit java -Xmx6144M -Xms4096M -jar /home/minecraft/craftbukkit.jar nogui
echo "*** Du kannst nun mit screen -r craftbukkit, bzw. screen -x craftbukkit zur Console connecten"
done
Würde das Skript sofort wieder von vorne Anfangen, da nicht abgewartet wird, bis der Screen Prozess terminiert wurde.
Dazu habe ich mich erkundigt und folgenden Befehl in Betracht gezogen:
Code:
#!/bin/bash
pid=`pidof java`
cd "/home/minecraft"
while true; do
sleep 3
echo "*** Das Starten des Minecraft-Servers beginnt!"
echo "*** Starte MoD-Craft mit dem Screen 'craftbukkit'"
screen -L -A -m -d -S craftbukkit java -Xmx6144M -Xms4096M -jar /home/minecraft/craftbukkit.jar nogui
echo "*** Du kannst nun mit screen -r craftbukkit, bzw. screen -x craftbukkit zur Console connecten"
wait $pid &
done
Da dadurch aber ein Child von der Shell beansprucht, versuchte ich mein Glück mit einer Schleife.
Code:
#!/bin/bash
pid=`pidof java`
cd "/home/minecraft"
while true; do
sleep 3
echo "*** Das Starten des Minecraft-Servers beginnt!"
echo "*** Starte MoD-Craft mit dem Screen 'craftbukkit'"
screen -L -A -m -d -S craftbukkit java -Xmx6144M -Xms4096M -jar /home/minecraft/craftbukkit.jar nogui
echo "*** Du kannst nun mit screen -r craftbukkit, bzw. screen -x craftbukkit zur Console connecten"
while [[ $pid{?} == 0 ]]; do
sleep 3
echo "Server wird neugestartet."
done
Dadurch, dass solange überprüft wird, bis der Prozess terminiert wurde (==0) sollte es eig. funktionieren, tut es jedoch nicht.
P.S. : Ich bin mir bewusst, dass ich mich ziemlich schlecht hiermit auskenne, aber jeder hat mal klein angefangen. Kritik ist erwünscht.
Ich wäre sehr dankbar über produktiven Antworten, ich bedanke mich schonmal im Vorraus
MoD2Cody