Хорошо, во-первых, вам нужно знать, что службы записи в Windows и Linux очень разные.Во-первых, в Linux «сервисы» не называются «сервисами», они называются «демонами».Зная это, вы можете использовать Google, чтобы найти этот чрезвычайно полезный документ .
Что касается запуска / остановки / перезапуска, здесь нет универсального готового решения.В большинстве случаев демоны создают файлы * .pid в / var / run;эти файлы содержат свои идентификаторы процесса "PID".Затем пишется простой bash-скрипт, который управляет выполнением демона, читая pid из соответствующего файла и отправляя ему сигнал уничтожения.
Например, предположим, что имя вашего демона - foo
.Затем он создаст файл /var/run/foo.pid и запишет в него свой PID, используя символы ASCII и добавив новую строку в конце.Ваше имя сценария управления будет fooctl
, оно должно поддерживать следующие команды: запуск, остановка и перезапуск.То есть, когда вы запускаете fooctl start
, сценарий должен сначала проверить, существует ли соответствующий файл pid, если нет, то сделать все необходимое для запуска демона;когда вы запускаете fooctl stop
, он должен прочитать pid из /var/run/foo.pid и завершить процесс с этим ID.В случае fooctl restart
ваш сценарий должен будет сначала остановить демон, а затем запустить его снова.
При этом, как говорится, это всего лишь соглашение о том, как должны работать демоны.Вот как это обычно делается.Но эти правила никак не соблюдаются.Вы можете изобретать и использовать свои собственные методы для создания и управления демонами.
Что касается второй части вашего вопроса (о apt-get), это называется управлением пакетами.Это не имеет ничего общего с демонами, но поскольку вы просили: чтобы сделать это с вашим пользовательским приложением, вам нужно будет опубликовать его в главном репозитории, что может быть невозможно по ряду причин;или вы можете создать свой собственный репо.Также вы можете собрать пакет * .deb для вашего приложения, и его будет так же просто установить.Поиск в Интернете для получения дополнительной информации о том, как создавать пакеты для пользовательских приложений Linux.