Создание сценария оболочки для использования с экраном?

Некоторое время я работал над созданием сценария оболочки, просматривая различные форумы, в том числе и этот, и используя все виды поисковых терминов, но безуспешно. Я надеюсь, что я не создаю дубликат вопроса.

У нас есть игровой сервер, и мы должны инициализировать экран вручную после перезагрузки или сбоя, но хотели бы упаковать несколько наших команд в один скрипт, чтобы уменьшить время простоя. Я хотел бы создать сценарий, который создает сеанс экрана, переключается на него и выполняет сценарий оболочки в новом сеансе.

Я попробовал код ниже в сценарии оболочки.

#!/bin/sh
screen -S tf2
./startserver.sh

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

Я не лучший в сценариях оболочки, но я хочу учиться, я делаю что-то не так? Есть ли другой способ, которым я должен идти об этом?

1 ответ

Решение

Как указано в ОПИСАНИИ man screen если вы хотите выполнить команду на экране, ее необходимо добавить к экрану выдачи команды. Так что в вашем случае это будет выглядеть

 #!/bin/sh
screen -S tf2 ./startserver.sh

Тем не менее, поскольку я не знаю, находится ли ваш shell-скрипт в рабочем каталоге экрана, сделать это более умно

 #!/bin/sh
screen -S tf2 /full/path/to/startserver.sh
Другие вопросы по тегам