Как я заставляю программу запуститься на начальной загрузке (никакой gui)

Я в настоящее время пытаюсь настроить Minecraft для меня и мальчиков для бездельничания на. что-то, что я хочу сделать, является находкой способ заставить программное обеспечение сервера автоматически запуститься, когда это загружается в случае, если что-то происходит и заставляет его перезапустить, когда я вдали от дома. Как сказано в заголовке, я выполняю это ни на какой версии GUI по причинам производительности.Заранее спасибо.

0
задан 26 December 2019 в 05:26

1 ответ

Так как это - Ваш первый вопрос на сайте, я собираюсь пытаться сверхобъяснить все в случае, если Вы плохо знакомы с этим. В целом, для выполнения процесса на начальной загрузке в современной системе Ubuntu Вы хотите установить "файл единицы Systemd" для "сервисной единицы" и "включить" ту единицу так, чтобы это автоматически запустило на начальной загрузке. Теперь у Вас есть условия к Google, если какое-либо из этого неясно.

В зависимости от того, какой сервис Вы запускаете, специфические особенности могут измениться немного, но для всех сервисов, который является высокоуровневым процессом.

Для Minecraft, это походит на нормальное руководство. На инструкции askubuntu я попытаюсь суммировать основные моменты руководства здесь (и добавить несколько вещей, которые они не учли)

, Создают пользователя/группу для выполнения сервера Minecraft

, Мы назовем это пользователем 'Minecraft' и группой пользователей 'Minecraft' по очевидным причинам ;-) Мы создаем этого пользователя, потому что это более безопасно, чем многократное использование Вашего собственного пользователя/группы. Если, оказывается, существует ошибка в сервере Minecraft, и один из Ваших плееров пользуется преимуществом, мы хотим ущерб, который они могут нанести, чтобы быть ограниченными. Гипотетически, скажем, ошибка позволяет злонамеренному плееру команды выполнения непосредственно на Вашем сервере. Если Ваш сервер работал как отдельный пользователь "Minecraft" и группа, они могут только команды выполнения как тот пользователь, который довольно строг. Худший случай, они, вероятно, повреждают Вашу установку Minecraft, которая является печальной, но не катастрофической. Если бы Вы не сделали нового пользователя/группу, и Вы выполнили Minecraft с помощью root пользователь (тот, который может сделать что-либо), затем, то то же гипотетическое нападение пошло бы от "срыва" до "моей целой системы, поставлен под угрозу, и все данные ускользались, мой сервер"

$ sudo adduser minecraft

Следует за подсказками для установки нового пользователя. Если Вам любопытно существуют лучшие команды, чем этот доступный (например, Вам действительно не нужны оболочка или домашний dir для этого пользователя), но это будет работать просто великолепно

, Создают Ваш сервисный файл

единицы Используя Вашего предпочтительного редактора (Вы будете нуждаться в полномочиях суперпользователя, так снабжать префиксом команду sudo, например, sudo nano, создавать файл в /etc/systemd/system/minecraft.service с этим содержанием:

[Unit]
Description=Minecraft server
Wants=network.target
After=local-fs.target network.target

[Service]
User=minecraft
Group=minecraft
UMask=0027

EnvironmentFile=/etc/conf.d/minecraft
KillMode=none
SuccessExitStatus=0 1 255

NoNewPrivileges=true
PrivateDevices=true
PrivateTmp=true
ProtectHome=true
ProtectSystem=full

WorkingDirectory=~
ExecStart=/usr/bin/java -Xms${MINHEAP} -Xmx${MAXHEAP} -XX:ParallelGCThreads=${THREADS} -jar server.jar --nogui
# ExecStop=/usr/bin/mcrcon -H localhost -p ${RCON_PASSWD} stop

[Install]
WantedBy=multi-user.target

Примечание 1: я прокомментировал mcrcon зависимость. Если Вы хотите немного лучший сервер, пойдите установка это и не прокомментируйте строку ExecStop. Примечание 2: Не стесняйтесь изменять строку ExecStart по мере необходимости. Например, если Вы хотите поместить полный путь в свое собственное server.jar, Вы могли бы сделать, это путем изменения строки ExecStart

Создает файл

среды к вашему сведению, нам только нужен этот шаг потому что предшествующие ссылки на файл единицы /etc/conf.d/minecraft, и затем использует те переменные в строке ExecStart. Если бы мы изменились, содержанию файла единицы к [1 117] не нужен файл среды, мы не должны были бы делать этого.

Создают файл, снова с помощью [1 112], в [1 113] и дают ему это содержание:

# RCON_PASSWD needs to be identical rcon.password in server.properties
RCON_PASSWD=example
MINHEAP=2G
MAXHEAP=4G
THREADS=6

Включают Ваш файл

$ sudo chmod 644 /etc/systemd/system/minecraft.service

единицы, Запускают Ваш сервис (это - одноразовый "запуск"), и затем проверьте, что это - состояние. Удостоверьтесь, что можно войти в систему, и все смотрит хорошо. Если у Вас есть проблемы, используйте эти stop команда, устраните проблему, то повторно выполненный эти start команда и проверяет состояние снова. Повторитесь, пока это не выглядит кошерным

$ sudo systemctl start minecraft
$ sudo systemctl status minecraft

, После того как все выглядит хорошим, позвольте сервису иметь автоматически выполненный при начальной загрузке:

$ sudo systemctl enable minecraft
0
ответ дан 26 December 2019 в 22:26

Другие вопросы по тегам:

Похожие вопросы: