У меня есть сценарий, который работает от rc.local
(сервер Minecraft в этом случае), с которым я должен смочь взаимодействовать (соединяются с его STDIN и STDOUT позже). Как я могу сделать это?
То, что Вы хотите сделать, использовать screen
. Это позволяет порождать процесс в своей сессии и отсоединяться от него. По существу Ваш вопрос подобен это .
3 шага, которые Вы хотите сделать:
строка ниже должна войти в Ваш /etc/rc.local
. Добавьте &
знак в конце его (важный!)
screen -S MyMinecraftServer -d -m java -jar ./SOMEFILES/CLEANUP/minecraft_server.1.8.8.jar nogui
Это - то, что Вы сделали бы от командной строки для нахождения сессии:
screen -ls
Пример произвел:
There is a screen on:
1720.MyMinecraftServer (2017年01月12日 13时54分36秒) (Detached)
1 Socket in /var/run/screen/S-xieerqi.
И это - то, как Вы присоединяете к нему:
screen -x 1720.MyMinecraftServer
ПРИМЕЧАНИЕ : стартовый сервер Minecraft от /etc/rc.local
может быть потенциальной дырой в системе безопасности. Рассмотрите использование su username -c '<screen command here>' &
для выполнения сервера как другого пользователя. См. также: https://serverfault.com/a/422952/363611