Anyservice: различия между версиями
(не показано 13 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
Anyservice позволяет запускать сервисы systemd (.service-файлы) на системе с [[w:UNIX_System_V | sysvinit]] с помощью monit. | |||
Поддержка anyservice встроена в [[epm|EPM]], и отдельно его лучше не использовать. | |||
Установка на любую платформу: | |||
# epm ei anyservice | |||
Исходный код: https://github.com/Etersoft/anyservice | |||
=== Пример использования с EPM === | |||
Достаточно поставить пакет anyservice и monit как всё заработает. | |||
Если в /lib/systemd/system нет файла сервиса, который пришёл с пакетом, нужно положить файл сервиса в /etc/anyservice. | |||
Далее обычные команды: | |||
# serv SERVICE on | |||
# serv SERVICE status | |||
=== Пример использования отдельно от EPM === | |||
1) Устанавливаем | |||
# epm ei anyservice | |||
2) Редактируем файл | 2) Редактируем файл сервиса: | ||
/etc/ | /etc/anyservice/mysleep.service | ||
<pre> | <pre> | ||
[Unit] | [Unit] | ||
Строка 25: | Строка 38: | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
</pre> | </pre> | ||
3) Запускаем скрипт | 3) Запускаем скрипт | ||
# anyservice mysleep start | |||
# anyservice mysleep start | |||
4) Доступные команды | 4) Доступные команды | ||
<pre> | <pre> | ||
anyservice --help | anyservice --help | ||
anyservice <service file name> [start|stop|restart|status|summary|remove|list|on|off] | |||
</pre> | </pre> | ||
Строка 44: | Строка 53: | ||
*Создание конфига для monit | *Создание конфига для monit | ||
При первичном запуске скрипт создает правило для monit'a на основании файла правила для systemd и помещает в стандартную для monit'а директорию /etc/monitrc.d . Более того, сам monit работает со службой через этот скрипт: запуски и остановки прописаны именно в anyservice. Никаких других конфигурационных файлов нет. | При первичном запуске скрипт создает правило для monit'a на основании файла правила для systemd и помещает в стандартную для monit'а директорию /etc/monitrc.d . Более того, сам monit работает со службой через этот скрипт: запуски и остановки прописаны именно в anyservice. Никаких других конфигурационных файлов нет. Пишется pid-файл в /var/run. | ||
*Запуск требуемого процесса через monit | *Запуск требуемого процесса через monit (используется start-stop-daemon) | ||
При необходимости службу можно (пере)запускать командами anyservice < | При необходимости службу можно (пере)запускать командами anyservice <servicename> <action>. Стандартная оснастка (serv, service, init.d, rc.d) не вовлечена: anyservice работает независимо (нужно удостовериться, что сам monit корректно прописан в sysvinit). | ||
=== Планы === | === Планы === | ||
* | * Добавить поддержку в epm | ||
* Обеспечить пользователю возможность добавлять свои задания (что-то похожее на cron и crontab -e) | |||
https://wiki.archlinux.org/index.php/Systemd/User | |||
=== Ссылки === | === Ссылки === | ||
Строка 61: | Строка 72: | ||
* [http://supervisord.org/ Supervisor: A Process Control System] | * [http://supervisord.org/ Supervisor: A Process Control System] | ||
* [http://proft.me/2011/05/28/supervisor-kaznit-nelzya-pomilovat/ Описание supervisor на русском] | * [http://proft.me/2011/05/28/supervisor-kaznit-nelzya-pomilovat/ Описание supervisor на русском] | ||
* http://cr.yp.to/daemontools.html | |||
* [https://github.com/kostya/eye Process monitoring tool. Inspired from Bluepill and God. Requires Ruby(MRI) >= 1.9.3-p194] | |||
* http://habrahabr.ru/post/268583/ замена Supervisord на Systemd | |||
* https://coreos.com/os/docs/latest/using-systemd-drop-in-units.html Замена дефолтных конфигов systemd | |||
* https://wiki.archlinux.org/index.php/Systemd/User | |||
* [https://sourceforge.net/projects/anyservice/ Проект с таким же названием и целью для win] [http://www.pokalnetov.ru/windows/any-service-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D0%BB%D1%83%D0%B6%D0%B1%D1%8B-%D0%B8%D0%B7-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/ Описание] [http://anyservice.cvs.sourceforge.net/viewvc/anyservice/SourceForge/AnyService.cpp?revision=1.2&content-type=text%2Fplain код] | |||
* https://github.com/foreverjs/forever | |||
=== Ссылки === | |||
* [http://www.freedesktop.org/software/systemd/man/systemd.service.html Описание systemd.service] | * [http://www.freedesktop.org/software/systemd/man/systemd.service.html Описание systemd.service] | ||
Текущая версия на 11:14, 8 декабря 2017
Anyservice позволяет запускать сервисы systemd (.service-файлы) на системе с sysvinit с помощью monit.
Поддержка anyservice встроена в EPM, и отдельно его лучше не использовать.
Установка на любую платформу:
# epm ei anyservice
Исходный код: https://github.com/Etersoft/anyservice
Пример использования с EPM
Достаточно поставить пакет anyservice и monit как всё заработает. Если в /lib/systemd/system нет файла сервиса, который пришёл с пакетом, нужно положить файл сервиса в /etc/anyservice.
Далее обычные команды:
- serv SERVICE on
- 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
Ссылки
- Запуск сервиса под пользователем - описание решаемой проблемы
- Anyservice - гит репозиторий
Другие решения, не связанные с /sbin/init
- http://cr.yp.to/daemontools.html
- Process monitoring tool. Inspired from Bluepill and God. Requires Ruby(MRI) >= 1.9.3-p194
- http://habrahabr.ru/post/268583/ замена Supervisord на Systemd
- https://coreos.com/os/docs/latest/using-systemd-drop-in-units.html Замена дефолтных конфигов systemd
- https://wiki.archlinux.org/index.php/Systemd/User