Anyservice

Материал из Etersoft wiki
Перейти к:навигация, поиск

Anyservice позволяет запускать сервисы systemd (.service-файлы) на системе с sysvinit с помощью monit.

Поддержка anyservice встроена в EPM, и отдельно его лучше не использовать.

Установка на любую платформу:

# epm ei anyservice

Исходный код: https://github.com/Etersoft/anyservice

Пример использования с EPM

Достаточно поставить пакет anyservice и monit как всё заработает. Если в /lib/systemd/system нет файла сервиса, который пришёл с пакетом, нужно положить файл сервиса в /etc/anyservice.

Далее обычные команды:

  1. serv SERVICE on
  2. serv SERVICE status

Пример использования отдельно от EPM

1) Устанавливаем

# epm ei anyservice

2) Редактируем файл сервиса: /etc/anyservice/mysleep.service

[Unit]
Description=run test sleep

[Service]
Type=simple
PIDFile=/var/run/odoo.pid
User=lav
WorkingDirectory=/home/lav/odoo/
ExecStart=/home/lav/odoo/odoo.py
Restart=always

[Install]
WantedBy=multi-user.target

3) Запускаем скрипт

# anyservice mysleep start

4) Доступные команды

anyservice --help
anyservice <service file name> [start|stop|restart|status|summary|remove|list|on|off]

Описание работы скрипта

  • Разбор конфига systemd
  • Создание конфига для monit

При первичном запуске скрипт создает правило для monit'a на основании файла правила для systemd и помещает в стандартную для monit'а директорию /etc/monitrc.d . Более того, сам monit работает со службой через этот скрипт: запуски и остановки прописаны именно в anyservice. Никаких других конфигурационных файлов нет. Пишется pid-файл в /var/run.

  • Запуск требуемого процесса через monit (используется start-stop-daemon)

При необходимости службу можно (пере)запускать командами anyservice <servicename> <action>. Стандартная оснастка (serv, service, init.d, rc.d) не вовлечена: anyservice работает независимо (нужно удостовериться, что сам monit корректно прописан в sysvinit).

Планы

  • Добавить поддержку в epm
  • Обеспечить пользователю возможность добавлять свои задания (что-то похожее на cron и crontab -e)

https://wiki.archlinux.org/index.php/Systemd/User

Ссылки


Другие решения, не связанные с /sbin/init

Ссылки