Я хочу создать службу в 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
Все вышеизложенное может быть достигнуто без терминала - т.е. создать папку с помощью Nautilus, создать файл, сделать его исполняемым; создать ярлык на рабочем столе и т. д.
Если вам интересно, как работает скрипт:
while [ 1 ]; do ... done
- бесконечный цикл
/path/to/game/executable
запускает приложение и ждет его завершения (очевидно, вам нужно изменить его на фактический путь вашего приложения).
command1 && command2
выполняет команду 1, а затем выполняет команду2 только в том случае, если команда завершена с помощью код возврата нуля (который указывает на успех). То есть цикл будет остановлен (оператор «break»), если программа завершена без ошибки, в противном случае она будет перезапущена.
У меня такое ощущение, что вы упоминаете только «сервис», потому что в 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
Все вышеизложенное может быть достигнуто без терминала - т.е. создать папку с помощью Nautilus, создать файл, сделать его исполняемым; создать ярлык на рабочем столе и т. д.
Если вам интересно, как работает скрипт:
while [ 1 ]; do ... done
- бесконечный цикл
/path/to/game/executable
запускает приложение и ждет его завершения (очевидно, вам нужно изменить его на фактический путь вашего приложения).
command1 && command2
выполняет команду 1, а затем выполняет команду2 только в том случае, если команда завершена с помощью код возврата нуля (который указывает на успех). То есть цикл будет остановлен (оператор «break»), если программа завершена без ошибки, в противном случае она будет перезапущена.