Как создать новый сеанс экрана и выполнить команду, но оставить экран там?

Как создать новый сеанс экрана и выполнить команду, но оставить экран там?

Привет, ребята, я пытаюсь запустить свой сервер Minecraft вместе с моим сервером. Я буду использовать cron, как только разберусь, какие команды нужны. Я хочу, чтобы Minecraft запускался на новом экране с названием «Minecraft», и я хочу, чтобы в этот сеанс отправлялась команда, которая запускает сервер. Каждое утро в 3 часа ночи я хочу отправлять команду «stop», чтобы остановить сервер Minecraft, а затем отправлять команду для запуска сервера (Minecraft глючит, если его не перезапускать время от времени). Я игрался с параметрами экрана, и Minecraft запустился на несколько секунд, а затем экран его убил. Из того, что я прочитал в интернете, эта команда должна работать.

screen -dmS Minecraft java -Xmx12G -Xms12G -jar /home/alan/minecraft/forge-1.16.5-36.2.30.jar --nogui

Я хочу снова подключиться к этому сеансу, чтобы ввести команды или перезапустить сервер Minecraft, потому что я внес изменения. Все команды, которые я запускал, не работали. Я ввожу «screen -ls», и мой сеанс «Minecraft» отсутствует. Я знаю, как использовать cron, но я явно не понимаю screen. У нас в районе часто отключают электроэнергию, поэтому у меня есть ИБП, который отключает мой сервер, а Raspberry PI включает его снова, когда электричество восстанавливается. Было бы неплохо включить Minecraft в мой автозагрузку. После этого все мои службы будут запускаться и останавливаться автоматически без моего вмешательства.

решение1

Поскольку вы назвали свой экран Minecraft,

# Tell Minecraft to gracefully stop.
# Ending Minecraft will terminate Java
# systemd will kill Screen after the 10-second delay. No explicit kill for Screen needed
screen -p 0 -S Minecraft -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\\015'
screen -p 0 -S Minecraft -X eval 'stuff "save-all"\\015'
screen -p 0 -S Minecraft -X eval 'stuff "stop"\\015'
sleep 10

Ваши команды легко поместить в службу systemd, которая также обеспечивает автоматический запуск при загрузке, мониторинг состояния и простое управление запуском/остановкой/перезапуском с помощью systemctl.

Как правило, вам не нужно оставлять экран открытым, поскольку все выходные данные регистрируются, а все команды сервера можно вводить через консоль администратора.

Пару лет назад я написал целый пост в блоге обо всем этом процессе: Это первая частьhttp://cheesehead-techblog.blogspot.com/2019/08/toggling-minecraft-server-using-systemd.html

Связанный контент