Anyservice
Anyservice - скрипт на bash позволяющий превратить программу в сервис. Настраивается аналогично systemd, работает на systemv
Пример использования
1) Скачиваем скрипт:
# 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
2) Редактируем файл настроек systemd: /etc/systemd-lite/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.sh <service file name> [start|stop|restart|status]
Описание работы скрипта
- Разбор конфига systemd
- Создание конфига для 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, используется start-stop-daemon
Планы
- Включить в epm
Ссылки
- Запуск сервиса под пользователем - описание решаемой проблемы
- Anyservice - гит репозиторий