Як керувати системною службою, яка потребує декількох процесів?


3

У мене є веб-сайт, який вимагає запуску декількох процесів (python, node тощо). Наразі у мене створена системна служба, щоб я міг легко запустити та зупинити ці процеси. Я створив стартовий скрипт, який запускає всі потрібні мені процеси як фонові процеси (додаючи &до кінця команди).

Це не дозволяє мені скористатися функцією автоматичного перезапуску systemd, коли щось виходить з ладу, оскільки всі процеси починаються під одним сценарієм.

Одне з потенційних рішень, про які я можу придумати, - це створити службу для кожного процесу, а потім з'єднати їх усі разом, створивши головну службу, яка Requiresїм. Я не прихильник цього, оскільки це означає, що мені потрібно створити 4-5 служб для кожного середовища цього веб-сайту, який я хочу запустити.

Чи є спосіб я легко визначити службу, яка запускає кілька процесів і контролює кожен з них окремо?


Ваше потенційне рішення є правильним. Інакше ви намагаєтесь знову реалізувати те, що systemd вже робить для вас: запуск / зупинка послуг з урахуванням їх залежностей.
Патрік Мевзек

Відповіді:


2

Створіть кілька служб шаблонів , які названі @таким чином:

  • website@.service
  • pythonthingy@.service
  • nodethingy@.service

Використовуючи шаблони, ви можете запустити названий примірник для кожного веб-сайту:

systemctl start pythonthingy@clientone.service nodethingy@clientone.service
systemctl start pythonthingy@clienttwo.service nodethingy@clienttwo.service

У межах таких одиниць шаблону ви можете використовувати %iдля посилання на ім'я екземпляра ("clientone" у цьому прикладі). Отже, "головний" блок (служба чи ціль) може мати:

[Unit]
Requires=pythonthingy@%i.service
...
[Service]
Environment="DOCROOT=/var/www/%i"

Якщо кожному сайту потрібні кілька параметрів, ви можете завантажити їх з файлу:

[Service]
EnvironmentFile=/etc/someconfigdir/%i.conf

Якщо для деяких сайтів потрібні нестандартні настройки блоку порівняно з рештою, використовуйте спадні програми:

  • pythonthingy@.service - загальний шаблон
  • pythonthingy@clientone.service.d/overrides.conf - додаткові параметри лише для клієнта 1

Шаблони, розсилки та розширення на зразок% i пояснюються у systemd.unit (5) .


Це саме те, що я шукаю, дякую.
Джессі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.