I'm trying to start up a minecraft server as soon as my ec2 instance boots (it has a CloudWatch event to stop and start the instance everyday, so when it boots i need to start the server)
My server's folder sits in /home/ec2-user/minecraft/
and inside this folder i have a start-server.sh script that runs the following command:
java -Xmx1024M -Xms1024M -jar minecraft_server.1.15.2.jar nogui
I can manually use screen
to start the server in the background and it works just fine, i can exit my ssh session and the server is still running.
But when i try to use screen
inside the start-up script the screen session doesn't start. Below are the 3 things that i've tried so far:
- Added a start-server-on-boot.sh script inside
/var/lib/cloud/scripts/per-boot
with the following command:
screen -dmS "minecraft" ~/minecraft/start-server.sh
What i was expecting to accomplish here was to start a detached screen session with the server running. If i run this script manually from the per-boot
folder it works as expected. But when it runs during start-up it doesn't work (when i ssh into the machine there's no screen session created)
I checked the cloud-init.log
for more details and the script ran without errors:
util.py[DEBUG]: Running command ['/var/lib/cloud/scripts/per-boot/start-server-on-boot.sh'] with allowed return codes [0] (shell=True, capture=False)
Added the script in the
/etc/rc.local
file. Also tested manually and it works, but when the instance boots it doesn't (no screen session created).Added a
User Data
script into my ec2 instance with the samescreen
command and it doesn't work as well. Tested running other commands and those worked (created afoo.txt
file)
I checked the cloud-init.log
as well and the script ran without errors:
util.py[DEBUG]: Running command ['/var/lib/cloud/instance/scripts/userdata.txt'] with allowed return codes [0] (shell=True, capture=False)
I believe that the issue is that the screen session is terminating for some reason.
I really don't know what else can i try here and really hope i'm making a silly mistake that someone can see and i can get this thing to work (it's the last thing missing in order to get everything up and running)