How do I use crontab to start a screen session?

I want to create a crontab entry so that it starts screen, starts a gameserver and detaches. This is for in case the server is rebooted and I want it to automatically start this for me.

0 0 0 0 0 (command)

should run upon startup.

It runs a shell file located at ~/cube/server.sh


Something like this should work. This example spawns a screen and runs "top":

screen -d -m top

In your crontab, as indicated, you'd want to do something like this:

@reboot /usr/bin/screen -dmS gameserver-screen /opt/mycoolgame/bin/gameserver

Of course, if the game server requires a "normal" environment set, you can get closer by:

@reboot (. ~/.profile; /usr/bin/screen -dmS gameserver-screen /opt/mycoolgame/bin/gameserver)

This should be sufficient...run

$ crontab -e

Then enter:

@reboot screen -dmS Victor

Just for completeness' sake, it's also possible to use tmux for the purpose instead of screen (see this link for a comparison):

@reboot tmux new-session -d -s yourNameOfTheSession "your command to run"

It needs to be noted that simply using screen -dmS SessionNameHere someCommand is NOT enough. In many envs (IE: Ubuntu 18.x) you also have to give the tmp dir or you cant re-attach to the running screen, you wont even be able to list them. The CORRECT way to run screen in crontab is like this:

 * * * * * export SCREENDIR=~/tmp ; screen -dmS SessionNameHEre SomeCommand

So if you cant connect to a session started by cron (I had this issue with Ubuntu 18), find out what screen is using for a tmp dir, and put that in the crontab entry. You can do that with "echo $SCREENDIR"