Como posso adaptar este script debian init.d para trabalhar com o CentOS 5?

4

Estou tentando obter um daemon lsyncd em execução. Eu instalei o lsyncd RPM da epel, mas não parece vir com um script init.d. No repositório lsyncd, há este script que funciona com o Debian. No entanto, quando tento executar isso no CentOS, recebo esta mensagem:

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

Como posso adaptar isso para trabalhar com o CentOS?

    
por Jason Baker 12.05.2010 / 16:07

3 respostas

4

escrever a partir do zero pode ser mais fácil, dependendo da complexidade do script. o problema que você está enfrentando é esta linha no script:

. /lib/lsb/init-functions

que carrega todas as funções dos scripts de inicialização do debian. em que é uma função 'log_daemon_msg' que é onde está o seu problema.

você poderia olhar o arquivo init-functions para descobrir o que o log_daemon_msg faz, e replicar no CentOS, ou você poderia percorrer o script Debian e ver o que é realmente executado (provavelmente menos de 5 linhas de comandos)

    
por 12.05.2010 / 19:15
2

/usr/share/doc/initscripts-*/sysvinitfiles contém um modelo que você pode usar como modelo para modificar o script existente ou criar um novo.

    
por 12.05.2010 / 16:14
0

Eu tive o mesmo problema. Aqui está o que eu criei seguindo as outras recomendações, tutoriais do init.d, e o script debian existente encontrado no site do googlecode lsyncd texto do link . Espero que isso ajude os outros, basta copiar e colar!

#!/bin/bash
#
# lsyncd        This shell script takes care of starting and stopping
#               lsyncd (the Live Syncing (Mirror) Daemon)
#
# Author: Randy Reddekopp [email protected]
#
# 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 $?

Cole o código em /etc/init.d/lsyncd.

Alterar permissões de arquivo:

chmod 755 /etc/init.d/lsyncd

No seu arquivo /etc/lsyncd.conf.xml você precisa remover o comentário da opção "< pidfile ... / >" nó e defina seu atributo filename para "/var/run/lsyncd.pid".

Então você deve estar pronto para iniciar o serviço!

/sbin/service lsyncd start

Felicidades, Randy

    
por 09.08.2010 / 18:34