Hallo an alle,
ich muss gleich mal sagen, dass ich absoluter Neuling bin was Linux betrifft.
Ich habe mir einen Root-Server (Debian 10) zugelegt und bisher Minecraft manuell über ein einfaches Startscript gestartet. Nun möchte ich Minecraft per Crontab automatisch starten und beenden.
Ich habe mir hier ein Script kopiert und für mich angepaßt, den Code kopiert und in nano eingefügt und gespeichert.
Wenn ich nun "scriptname.sh start" eingebe um dan Server manuell zu starten bekomme ich die Meldung "Kommando nicht gefunden".
Woran kann das liegen?
Danke schon mal im voraus
Lg
Tom_069
ich muss gleich mal sagen, dass ich absoluter Neuling bin was Linux betrifft.
Ich habe mir einen Root-Server (Debian 10) zugelegt und bisher Minecraft manuell über ein einfaches Startscript gestartet. Nun möchte ich Minecraft per Crontab automatisch starten und beenden.
start.sh:
#!/bin/bash
#Insert path to minecraft_server.jar here
DIR=/home/Ordner/Citybuild/
s_jar="spigot-1.12.2.jar"
r_time=30
##############################################################################
case "$1" in
start)
#check if there is a screen called "Citybuild"
is_it_running=`screen -ls | grep Citybuild`
if [ "$is_it_running" != "" ]
then
echo "*** There is already a screen called 'Citybuild' running. Aborting!"
else
echo "*** Starting minecraft-Server on screen 'Citybuild'"
cd $DIR
screen -A -m -d -L -S Citybuild java -Xincgc -Xmx16G -XX:+UseConcMarkSweepGC -jar spigot-1.12.2.jar -o true -h 127.0.0.1 -p 25575 -s 100 --log-append false --log-limit 50000
#check if it is running now
status=`screen -ls | grep Citybuild`
if [ "$status" == "" ]
then
echo "*** Starting failed!"
else
echo "*** Server started successfully!"
echo "*** You may now connect to console via 'screen -r Citybuild'"
echo $status
fi
fi
;;
stop)
echo "*** Looking for running minecraft-Server via 'screen'"
#check if there is a screen called "Citybuild"
is_it_running=`screen -ls | grep Citybuild`
if [ "$is_it_running" != "" ]
then
echo "*** Running minecraft-Server found:" $is_it_running
echo "*** Saving chunks with 'save-all'"
screen -dr Citybuild -p 0 -X stuff "$(printf "save-all\r")"
echo "*** Sending message to players, that server will shutdown in 30 sec"
screen -dr Citybuild -p 0 -X stuff "$(printf "broadcast Server wird in 30sec heruntergefahren...\r")"
echo "*** Message sent. Wait 30 sec ..."
sleep 30
screen -dr Citybuild -p 0 -X stuff "$(printf "say Server stoppen ...\r")"
echo ""
echo "*** Stopping" $is_it_running "now."
screen -dr Citybuild -p 0 -X stuff "$(printf "stop\r")"
#wait a while and then test if screen is there
sleep 10
status_off=`screen -ls | grep Citybuild`
if [ "$status_off" == "" ]
then
echo "*** minecraft-Server stopped!" $status_off
else
echo "*** Something went wrong!" $status_off
fi
else
echo "*** No screen called 'Citybuild' found. Is server really running?"
fi
;;
status)
#check if there is a screen called "Citybuild"
is_it_running=`screen -ls | grep Citybuild`
if [ "$is_it_running" != "" ]
then
echo "*** Running minecraft-Server found:" $is_it_running
else
echo "*** No screen called 'Citybuild' found. Is server really running?"
fi
;;
webstat)
#check if there is a screen called "Citybuild"
is_it_running=`screen -ls | grep Citybuild`
if [ "$is_it_running" != "" ]
then
echo "1"
else
echo "0"
fi
;;
restart)
#check if there is a screen called "Citybuild"
is_it_running=`screen -ls | grep Citybuild`
if [ "$is_it_running" != "" ]
then
echo "*** Sending message to players, that server will restart in $r_time sec"
screen -dr Citybuild -p 0 -X stuff "$(printf "broadcast ServerRestart in $r_time Sekunden!!\r")"
echo "*** Message sent. Wait $r_time sec ..."
sleep $r_time
echo "*** Saving chunks with 'save-all'"
screen -dr Citybuild -p 0 -X stuff "$(printf "save-all\r")"
screen -dr Citybuild -p 0 -X stuff "$(printf "say Server wird neugestartet.\r")"
sleep 5
echo "*** Stopping" $is_it_running "now."
screen -dr Citybuild -p 0 -X stuff "$(printf "stop Wir sind gleich wieder da\r")"
echo "*** Check for stopped Server"
s_running=`screen -ls | grep Citybuild`
if [$s_running != "" ]
then
$s_running="TRUE"
else
$s_running="FALSE"
fi
while [ $s_running != "TRUE" ]
do
sleep 2
s_running=`screen -ls | grep Citybuild`
if [$s_running != "" ]
then
$s_running="TRUE"
else
$s_running="FALSE"
fi
done
echo "*** Starting minecraft-Server on screen 'Citybuild'"
cd $DIR
screen -A -m -d -L -S Citybuild java -Xincgc -Xmx16G -XX:+UseConcMarkSweepGC -jar spigot-1.12.2.jar -o true -h 127.0.0.1 -p 25575 -s 100 --log-append false --log-limit 50000
#check if it is running now
status=`screen -ls | grep Citybuild`
if [ "$status" == "" ]
then
echo "*** Starting failed!"
else
echo "*** Server started successfully!"
echo "*** You may now connect to console via 'screen -r Citybuild'"
echo $status
fi
else
echo "*** No screen called 'Citybuild' found. Is server really running?"
fi
;;
*)
echo $"*** Usage: $0 {start|stop|status|restart}"
exit 1
esac
Ich habe mir hier ein Script kopiert und für mich angepaßt, den Code kopiert und in nano eingefügt und gespeichert.
Wenn ich nun "scriptname.sh start" eingebe um dan Server manuell zu starten bekomme ich die Meldung "Kommando nicht gefunden".
Woran kann das liegen?
Danke schon mal im voraus
Lg
Tom_069