Вопрос или проблема
У меня есть игровой сервер, который я хотел бы автоматически перезапускать.
В настоящее время я делаю это для запуска сервера.
screen -dmS screenname // создать новый экран
screen -xs screenname // присоединиться к экрану
bash ~/start.sh
Каждые несколько часов эта программа вылетает, и мне приходится подключаться по SSH, чтобы запустить её вручную.
Есть ли способ, чтобы .sh загружался автоматически, если он обнаруживает, что сервер упал?
Есть файл для аварийного завершения сервера (если сервер упадет, этот файл будет исполнен).
СОЗДАЙТЕ свой bash файл.
Или поместите команду в этот файл (скрипт).
всякий раз, когда происходит аварийное завершение, ваш файл автоматически запускается
ИЛИ
Следующий автозапуск (каждый раз, когда операционная система запускается, она запускает некоторые приложения, которые указаны в автозагрузке для ОС, например: включить Wi-Fi и подобное)
$ cd ~ #домашний каталог
$ touch AutoRun.sh #Создать файл AutoRun.sh
$ nano AutoRun.sh /vim AutoRun.sh
#вставьте вашу команду сюда
screen -dmS screenname // создать новый экран
screen -xs screenname // присоединиться к экрану
bash ~/start.sh
$ crontab -e
# Добавьте строку, подобную этой:
@reboot ~/AutoRun.sh
#### ⬇️⬇️⬇️ для справки о ⬇️⬇️⬇️
Перейдите по этой ссылке :::: Нажмите на меня
Ответ или решение
Для автоматического перезапуска вашего игрового сервера в случае его падения, вы можете использовать различные подходы, включая написание скрипта на Bash и настройку cron. Давайте подробно рассмотрим, как вы можете это реализовать.
Шаг 1: Создание скрипта для запуска сервера
-
Создайте файл скрипта:
Откройте терминал и выполните следующие команды для создания Bash-файла:cd ~ touch AutoRun.sh nano AutoRun.sh # Используйте nano или vim для редактирования файла
-
Редактирование файла AutoRun.sh:
Вставьте в файл следующие команды:#!/bin/bash # Запуск игрового сервера в новом сеансе screen screen -dmS screenname # создание нового seанса screen screen -xs screenname # присоединение к сеансу screen bash ~/start.sh # запуск вашего игрового сервера
-
Сохраните изменения и выйдите из редактора. (В nano нажмите
Ctrl + O
, затемEnter
, иCtrl + X
для выхода.) -
Установите права на выполнение:
Убедитесь, что ваш скрипт имеет права на выполнение:chmod +x AutoRun.sh
Шаг 2: Настройка автоматического перезапуска
Теперь, когда у вас есть скрипт, который запускает сервер, вы можете использовать crontab для его автоматического запуска при сбое.
-
Откройте crontab для редактирования:
crontab -e
-
Добавьте следующее правило для автоматического запуска:
В конце файла добавьте строку:@reboot ~/AutoRun.sh
Это означает, что ваш скрипт будет автоматически выполняться каждый раз при запуске вашей системы.
-
Сохраните и выйдите из редактора.
Шаг 3: Обработка сбоев сервера
Чтобы ваш сервер автоматически перезапускался в случае падения, можно использовать другой подход — использование системного мониторинга через systemd
или аналогичные инструменты.
Пример использования systemd
-
Создайте файл службы systemd:
Создайте новый сервисный файл:sudo nano /etc/systemd/system/game-server.service
-
Добавьте следующую конфигурацию:
[Unit] Description=Game Server After=network.target [Service] Type=simple ExecStart=/usr/bin/screen -dmS screenname bash ~/start.sh Restart=always User=yourusername [Install] WantedBy=multi-user.target
Замените
yourusername
на ваше имя пользователя. -
Запустите и активируйте службу:
sudo systemctl daemon-reload sudo systemctl start game-server.service sudo systemctl enable game-server.service
Заключение
Теперь ваш игровой сервер будет автоматически перезапускаться в случае сбоя, благодаря настройкам systemd
или cron. Вы можете выбрать подходящий вам способ, в зависимости от ваших предпочтений и требований. Используя автоматизацию запуска, вы значительно упростите управление сервером и минимизируете время простоя. Если у вас есть дополнительные вопросы или требуется помощь в настройках, не стесняйтесь обращаться за дополнениями или разъяснениями.