Создайте службу в linux с помощью сценария оболочки

Я хочу создать службу в linux, как в Windows. который я могу запустить или остановить с помощью скрипта. служба должна запустить игровое приложение, которое связано с некоторыми зависимостями.

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

Назначение службы: мне понравится, чтобы служба автоматически перезапустила приложение в случае его сбоя. Чтобы узнать, что автоматический перезапуск приложения может быть выполнен через службы

, пожалуйста, помогите мне в этом, я новичок в linux: (

1
задан 7 October 2011 в 10:29

2 ответа

У меня такое ощущение, что вы упоминаете только «сервис», потому что в 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»), если программа завершена без ошибки, в противном случае она будет перезапущена.

4
ответ дан 10 August 2018 в 09:10

У меня такое ощущение, что вы упоминаете только «сервис», потому что в 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»), если программа завершена без ошибки, в противном случае она будет перезапущена.

4
ответ дан 13 August 2018 в 12:33
  • 1
  • 2
  • 3
    – Florian Diesch 7 October 2011 в 13:03
  • 4
    @FlorianDiesch оригинальный «рецепт», использование которого я пытался объяснить, упомянул о 2-секундном сне перед перезапуском программы - в этом случае второй Ctrl-C позволил бы разорвать цикл, что, вероятно, еще проще, чем создать файл в / var / run / – Sergey 7 October 2011 в 13:38
  • 5

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

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