Я хочу создать запись crontab, чтобы она запускала экран, запускала игровой сервер и отключалась. Это на случай, если сервер перезагружается, и я хочу, чтобы он автоматически запускал это для меня.
0 0 0 0 0 (команда)
должен запускаться при запуске.
Он запускает файл оболочки, расположенный в ~ / cube / server.sh
Примерно так должно работать. В этом примере создается экран и выполняется "сверху":
screen -d -m top
В вашем crontab, как указано, вы хотите сделать что-то вроде этого:
@reboot /usr/bin/screen -dmS gameserver-screen /opt/mycoolgame/bin/gameserver
Конечно, если для игрового сервера требуется "нормальный" набор окружений, вы можете приблизиться:
@reboot (. ~/.profile; /usr/bin/screen -dmS gameserver-screen /opt/mycoolgame/bin/gameserver)
Этого должно быть достаточно ... беги
$ crontab -e
Затем введите:
@reboot screen -dmS Victor
Для полноты картины также можно использовать tmux с целью вместо screen
(видеть эта ссылка для сравнения):
@reboot tmux new-session -d -s yourNameOfTheSession "your command to run"
У меня была похожая ситуация, но из-за других необоснованных ограничений я не мог использовать crontab. У меня действительно был экран вызова inittab. (заменены некоторые имена на непонятную информацию):
XXX:5:respawn:/bin/su - useraccount -c "screen -D -m -c /home/xxxxxx/file.screenrc"
В файле 'file.screenrc' я настраиваю несколько параметров:
sessionname obscuresessionname
multiuser on
cd
screen /home/xxxxxxx/programtostart
Таким образом, он запускается при загрузке, и если программа умирает или экран закрывается, он снова появляется. Возможно, это не считалось обычным, но мне пришлось обойти несколько странных требований к среде. Если бы нам нужно было его отключить, нам пришлось бы закомментировать эту строку и убить сеанс. Затем, когда будете готовы вернуть его, раскомментируйте и запустите q.