LinuxForum.Fans
Тема

Самопальный сервис

Автор: Fat-Zer 11 сообщений 2635 просмотров
#383778

Есть небольшой самопальный демон (на питоне, работает с мускулем). Нужно добавить его в автозагрузку от непривелегированного пользователя и респаунить в случае падения... ещё желательно аккуратно его завершать при останонове системы и перезапускать по команде пользователя... как это православно сделать в шляпе (CentOS 6)?

писать отдельный скрипт в /etc/init.d больно жирно... в inittab — слишком близко к системе ...
пожалуй лучшим вариантом был бы аналог гетушного /etc/local.d/foo.{start,stop} и совет по респауну и зупаску от другого пользователя...

да, со шляповскими заморочками я слабо знаком, поэтому буду рад ссылкам на доки...

#383795

Делал такое с помощью insserv помнится.. вполне годный вариант [был].

#383796

почему бы и не написать upstart-скрипт? на мой взгляд, управление сервисом будет гораздо гибче и удобней, чем просто скриптом из rc.local. Кстати, респаун апстарт тоже умеет.

#383799
"overlayer" написал:
Делал такое с помощью insserv помнится.. вполне годный вариант [был].

insserv — это же просто дебиановская приблуда управления sysv init'ом... нет? тогда при чём здесь она?

"alexfinn" написал:
почему бы и не написать upstart-скрипт?

потому что это не бубунта... хотя склоняюсь к тому, что всё же буду sysv'шный скрипт писать...

#383800
"Fat-Zer" написал:
потому что это не бубунта

и?
в RHEL6 апстарт подефолту... посему "небубунтушность" тут не в тему
само собой, инит-скрипты поддерживаются, но все же

#383802
"alexfinn" написал:
и?
в RHEL6 апстарт подефолту... посему "небубунтушность" тут не в тему
само собой, инит-скрипты поддерживаются, но все же

мда... а слона то я и не приметил... покурю про апстарт... до чтения доков терзает вопрос, умеет ли он запускать после зависимостей из sysvinit'а т.к. всё остальное запускается по-старому...

#383803

в скрипте прописывается после чего должен быть старт, но вот по поводу "последним" так сразу не подскажу, как-то никогда необходимости не было

#383868
"alexfinn" написал:
в скрипте прописывается после чего должен быть старт, но вот по поводу "последним" так сразу не подскажу, как-то никогда необходимости не было

мне не обязательно главное, после мускуля, который запускается скриптами sysvinit'а... в принципе если не заработает, то можно после sysvinit'а прописать.... sysv'шные срипты запускаются task'ом после каждого перехода на другой ранлевел... ... если _после_ них ещё как-то и получится прописать запуск, то остановку вряд ли получится с ними связать...

сейчас другая напать... в шляпе апстарт старый и не поддерживает setgid/setuid... что под эти цели приспособить? не su[do] же...
прочитал про runuser

#383874
"Fat-Zer" написал:
главное, после мускуля

тогда прописать запуск после мускуля

"Fat-Zer" написал:
остановку вряд ли получится с ними связать

необходимо стопать после остановки определеных сервисов?

#383889
"alexfinn" написал:
тогда прописать запуск после мускуля

говорю же... мускуль запускается скриптами sysv (/etc/init.d/mysqld), которые запускаются костылём (утрированно)

text
start on runlevel [0123456]
task
exec /etc/rc.d/rc $RUNLEVEL

и upstart о мускуле, соответственно, ничего не знает... чувствую, что придётся всё же писать sysv-скрипт...

"alexfinn" написал:
необходимо стопать после остановки определеных сервисов?

желатльно было бы остановить перед мускулем, но это скорее вопрос красоты, нежели необходимости...

#387078

была такая шляпа

text

#!/bin/sh
#
# Startup script for rtmp lite
#
# chkconfig: 345 20 80
# description: rtmp lite media server

# Settings RTMPLITE_FLDR=/usr/src/rtmplite-read-only/

# See how we were called. case "$1" in start) echo -n "Starting rtmpd: " if [ -f /var/lock/subsys/rtmpd ] ; then echo exit 1 fi cd $RTMPLITE_FLDR && PYTHONPATH=../p2p-sip-read-only/src:. && export PYTHONPATH && python ./siprtmp.py -d & echo touch /var/lock/subsys/rtmpd ;; stop) echo -n "Shutting down rtmpd: " pkill -9 -f siprtmp.py echo rm -f /var/lock/subsys/rtmpd ;; status) status rtmpd ;; condrestart) if [ -f /var/lock/subsys/rtmpd ]; then $0 stop $0 start fi ;; reload|restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac

exit 0

Войдите или зарегистрируйтесь, чтобы ответить.