Anyservice: различия между версиями

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
 
(не показано 14 промежуточных версий 3 участников)
Строка 1: Строка 1:
[http://git.etersoft.ru/people/danil/packages/?p=anyservice.git; Anyservice] - скрипт на bash позволяющий превратить программу в сервис. Настраивается аналогично systemd, работает на [[w:UNIX_System_V | systemv]]
Anyservice позволяет запускать сервисы systemd (.service-файлы) на системе с [[w:UNIX_System_V | sysvinit]] с помощью monit.


=== Пример использования ===
Поддержка anyservice встроена в [[epm|EPM]], и отдельно его лучше не использовать.


1) Скачиваем скрипт:
Установка на любую платформу:
<pre>
# epm ei anyservice
# wget "http://git.etersoft.ru/people/danil/packages/?p=anyservice.git;a=blob_plain;f=anyservice.sh" -O anyservice && mv -u anyservice /usr/bin/anyservice && chmod 755 /usr/bin/anyservice
 
</pre>
Исходный код: 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) Редактируем файл настроек systemd:
2) Редактируем файл сервиса:
/etc/systemd-lite/mysleep.service
/etc/anyservice/mysleep.service
<pre>
<pre>
[Unit]
[Unit]
Строка 25: Строка 38:
WantedBy=multi-user.target
WantedBy=multi-user.target
</pre>
</pre>
сейчас это все поддерживаемые опции


3) Запускаем скрипт
3) Запускаем скрипт
<pre>
# anyservice mysleep start
# anyservice mysleep start
</pre>


4) Доступные команды
4) Доступные команды
<pre>
<pre>
anyservice --help
anyservice --help
# anyservice.sh <service file name> [start|stop|restart|status]
anyservice <service file name> [start|stop|restart|status|summary|remove|list|on|off]
</pre>
</pre>


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


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


При первичном запуске скрипт создает правило для monit'a на основании файла правила для systemd и помещает в стандартную для monit'а директорию /etc/monitrc.d . Более того, сам monit работает со службой через этот скрипт: запуски и остановки прописаны именно в anyservice. Никаких других конфигурационных файлов нет. Только логи (/var/log/anyservice/<servicename>) и pid-файл (/var/run). При необходимости службу можно (пере)запускать командами anyservice <action> <servicename> . Стандартная оснастка (serv, service, init.d, rc.d) не вовлечена: anyservice работает независимо (нужно удостовериться, что сам monit корректно прописан в sysvinit).
При первичном запуске скрипт создает правило для monit'a на основании файла правила для systemd и помещает в стандартную для monit'а директорию /etc/monitrc.d . Более того, сам monit работает со службой через этот скрипт: запуски и остановки прописаны именно в anyservice. Никаких других конфигурационных файлов нет. Пишется pid-файл в /var/run.


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


=== Планы ===
=== Планы ===
* Включить в epm
* Добавить поддержку в epm
* Обеспечить пользователю возможность добавлять свои задания (что-то похожее на cron и crontab -e)
https://wiki.archlinux.org/index.php/Systemd/User


=== Ссылки ===
=== Ссылки ===
Строка 59: Строка 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]
* [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 код]

Текущая версия на 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.

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

  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

Ссылки