Я хочу создать сервис в Linux, как мы делаем в Windows. который я могу начать или остановить с помощью скрипта. служба должна запустить игровое приложение, с которым связаны некоторые зависимости.
По сути, я хочу, чтобы выполнялся скрипт, который создает службу в linux, эта служба в основном запускает игровое приложение (запуск также выполняется через скрипт), так что, как и служба, должна запускать скрипт.
Цель службы : мне нравится, что служба автоматически перезапускает приложение в случае его сбоя. Нужно знать, что автоматический перезапуск приложения может быть выполнен с помощью сервисов
. Пожалуйста, помогите мне, я новичок в Linux: (
У меня такое ощущение, что вы упоминаете только «службу», потому что в Windows можно настроить службу на автоматический перезапуск при сбое. Я даже думаю, что было бы нелегко заставить произвольное «игровое приложение» работать в качестве службы в Windows, потому что службы работают с ограниченными привилегиями.
Если вам нужен скрипт, который автоматически перезапускает приложение, если последнее завершает работу с ненулевым кодом ошибки (т. Е. Когда происходит сбой), проверьте ответ Anycorn на аналогичный вопрос по stackoverflow . Это очень просто и не требует никаких услуг.
Если вам нужны пошаговые инструкции, вот что я бы сделал:
создайте каталог с именем bin в вашей домашней папке:
mkdir ~/bin
создайте скрипт «startgame» в этом каталоге:
touch ~/bin/startgame
откройте его в текстовом редакторе:
gedit ~/bin/startgame
введите следующий текст:
#!/bin/bash
while [ 1 ]; do /path/to/game/executable && break; done
сохраните файл;
установить исполняемый бит на нем:
chmod +x ~/bin/startgame
выполнить скрипт, набрав в терминале
startgame
Все вышеперечисленное может быть достигнуто без терминала - т.е. создать папку с помощью Наутилус, создайте файл, сделайте его исполняемым; создать ярлык на рабочем столе и т. д.
Если вам интересно, как работает скрипт:
while [ 1 ]; do ... done
- это бесконечный цикл
/path/to/game/executable
запускает приложение и ожидает его завершения (очевидно, вам нужно измените его на фактический путь вашего приложения)
command1 && command2
выполняет команду 1, а затем выполняет команду 2 , только если команда 1 завершилась с нулевым кодом возврата (который указывает на успех). То есть цикл остановится (оператор 'break'), только если программа завершится без ошибки, в противном случае он будет перезапущен.