Назад | Перейти на главную страницу

Как я могу адаптировать этот сценарий debian init.d для работы с CentOS 5?

Я пытаюсь запустить демон lsyncd. Я установил lsyncd RPM от epel, но, похоже, он не поставляется со сценарием init.d. В репозитории lsyncd есть этот сценарий который работает с Debian. Однако, когда я пытаюсь запустить это под CentOS, я получаю следующее сообщение:

/etc/init.d/lsyncd: line 46: log_daemon_msg: command not found

Как я могу адаптировать это для работы с CentOS?

писать с нуля было бы проще, в зависимости от сложности сценария. проблема, с которой вы столкнулись, - это эта строка в скрипте:

. /lib/lsb/init-functions

который загружает все функции для сценариев запуска debian. в этом функция log_daemon_msg, в которой заключается ваша проблема.

вы можете посмотреть файл init-functions, чтобы выяснить, что делает log_daemon_msg, и выполнить репликацию на CentOS, или вы можете пройти через сценарий Debian и посмотреть, что на самом деле выполняется (возможно, менее 5 строк команд)

/usr/share/doc/initscripts-*/sysvinitfiles содержит шаблон, который можно использовать в качестве модели для изменения существующего сценария или создания нового.

Я была такая же проблема. Вот что я придумал, следуя другим рекомендациям, руководствам по init.d и существующему сценарию debian, найденному на сайте lsyncd googlecode. текст ссылки. Надеюсь, это поможет другим, просто скопируйте и вставьте!

#!/bin/bash
#
# lsyncd        This shell script takes care of starting and stopping
#               lsyncd (the Live Syncing (Mirror) Daemon)
#
# Author: Randy Reddekopp not-public@usask.ca
#
# chkconfig: 2345 13 87
# description: Lsyncd uses rsync to synchronize local directories with a remote \
#    machine running rsyncd. It watches multiple directories trees \
#    through inotify. The first step after adding the watches is to \
#    rsync all directories with the remote host, and then sync single \
#    file by collecting the inotify events. So lsyncd is a light-weight \
#    live mirror solution.
# pidfile: /var/run/lsyncd.pid
# processname: lsyncd

# Source function library.
. /etc/init.d/functions

PIDFILE="/var/run/lsyncd.pid"
LSYNCD_DIR="/usr/local/bin/"

start() {
        echo -n "Starting Live Syncing Daemon: "
        if [ -f $PIDFILE ]; then
                PID=`cat $PIDFILE`
                echo lsyncd already running: $PID
                exit 1;
        else
                cd $LSYNCD_DIR
                daemon ./lsyncd $OPTIONS
                RETVAL=$?
                echo
                [ $RETVAL -eq 0 ] && touch /var/lock/subsys/lsyncd
                return $RETVAL
        fi

}

stop() {
        echo -n "Shutting down Live Syncing Daemon: "
        echo
        killproc lsyncd
        echo
        rm -f /var/lock/subsys/lsyncd
        return 0
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status lsyncd
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $?

Вставьте этот код в /etc/init.d/lsyncd.

Изменить права доступа к файлам:

chmod 755 /etc/init.d/lsyncd

В вашем файле /etc/lsyncd.conf.xml вам нужно раскомментировать узел «<pidfile ... />» и установить для его атрибута имени файла значение «/var/run/lsyncd.pid».

Тогда вы должны быть настроены на запуск службы!

/ sbin / service lsyncd start

Привет, Рэнди