В настоящее время у меня есть VPS с установленным Centos7. У меня также есть запрограммированный « Steambot », который я хотел бы установить на VPS, и он будет автоматически запускаться постоянно, когда VPS находится в сети. Я не уверен, как это сделать, исследовал и заметил из поста в /r /SteamBot subreddit, что для VPS необходим моно для этого. Не уверен скорее или нет, что это правда или нет, что привело меня сюда.

2 ответа2

0

Сначала запустите его "вручную". Если вы еще этого не сделали, установите epel и mono и заставьте бот работать. Вам нужно написать что-то, что запустит команду и продолжит ее работу.

  1. Напишите сценарий инициализации, чтобы запустить его. Centos 7 использует systemd, что позволит вам делать такие аккуратные вещи, как автоматический перезапуск. Я не погружался в systemd сам, но это хорошо документировано.

  2. Я обычно использую метод supervisord. Это не системный уровень. будет перезапускать вещи при сбое, и имеет дополнительный веб-интерфейс

Ваш сценарий супервизора так же прост, как

command=command to run steambot
directory=directory you want to run steambot in
autostart=true
startretries=5
stderr_logfile=/var/log/supervisor/ttrss/ttrss.err.log
user=www-data

Это регистрирует ошибки, и Вы можете добавить строку для регистрации стандартного вывода в целях устранения неполадок.

  1. Добавьте его в ваш crontab, если это не интерактивное приложение (иначе оно становится сложнее). @reboot запустит его один раз при перезагрузке, но другие методы лучше, так как они регистрируются и перезагружаются при ошибке
0

Самое простое - написать сервис systemd. Systemd обладает очень широким спектром возможностей, и вы не указали, чего хотите, поэтому я дам вам очень простой скрипт:

   [Unit]
   Description=Some comment here about what this does
   After=network.target

   [Service]
   EnvironmentFile=-/path/to/flag/setting/file
   ExecStart=/absolute/path/to/executable $FLAGS
   ExecReload=/bin/kill -HUP $MAINPID
   KillMode=process
   Restart=on-failure
   User=%i
   Group=users

   [Install]
   WantedBy=multi-user.target

Переменная $ FLAGS должна быть установлена в файле /path/to/flag/setting/file , если это сложный выбор, в противном случае просто удалите эту строку и замените приведенную ниже на

  ExecStart=/absolute/path/to/executable -i -f -d

или какие флаги вам нужны. Выше следует поместить в файл с именем myservice@.service . Таким образом, это можно назвать

  systemctl myservice@MyName.service  

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

Если вместо этого вам не нужно, чтобы другие пользователи могли запускать службу, используйте строку

     User=MyName

сохраните файл в myservice.service и управляйте им, не передавая аргумент, как systemctl myservice ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .