1 (15.06.2014 02:51:13 отредактировано Fat-Zer)

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

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

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

95% процентов проблем находятся между клавиатурой и стулом.

2 (15.06.2014 12:06:04 отредактировано overlayer)

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

3

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

4

overlayer пишет:

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

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

alexfinn пишет:

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

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

95% процентов проблем находятся между клавиатурой и стулом.

5 (15.06.2014 13:05:24 отредактировано alexfinn)

Fat-Zer пишет:

потому что это не Ubuntu

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

6

alexfinn пишет:

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

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

95% процентов проблем находятся между клавиатурой и стулом.

7

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

8 (16.06.2014 04:34:36 отредактировано Fat-Zer)

alexfinn пишет:

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

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

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

95% процентов проблем находятся между клавиатурой и стулом.

9

Fat-Zer пишет:

главное, после мускуля

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

Fat-Zer пишет:

остановку вряд ли получится с ними связать

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

10 (16.06.2014 10:00:42 отредактировано Fat-Zer)

alexfinn пишет:

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

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

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

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

alexfinn пишет:

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

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

95% процентов проблем находятся между клавиатурой и стулом.

11

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

#!/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