quinta-feira, 2 de janeiro de 2014

Adicionando seu script shell no chkconfig

Estava configurando um script para inicialização do rsync em um CentOs e tive a ideia de coloca-lo como serviço e inicializa-lo através do chkconfig. Porém, vi que não dá para simplesmente adicioná-lo no chkconfig. Após pesquisas na internet, consegui fazer funcionar da seguinte forma.


Primeiramente, devemos criar o script

#!/bin/bash

#Script criado para automatização do rsync na inicialização

# Biblioteca de funcoes
 . /etc/rc.d/init.d/functions

PROG='/usr/bin/rsync'
BASE=${0##*/}

# O arquivo de configuracao do rsync tem que conter a linha abaixo:
#  pid file = /var/run/rsync.pid
OPTIONS="--daemon"

case "$1" in
  start)
    echo -n $"Inicializando $BASE: "
    daemon $PROG $OPTIONS
    RETVAL=$?
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$BASE
    echo
    ;;
  stop)
    echo -n $"Finalizando $BASE: "
    killproc $PROG
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$BASE
    echo
    ;;
  restart|force-reload)
    $0 stop
    sleep 1
    $0 start
    ;;
  status)
    status $PROG
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status|force-reload}" >&2
    exit 1
    ;;
esac


Salvei o script chamado rsync na pasta /etc/init.d, que nos derivados Red Hat, é aonde se localizam os scripts de serviços do sistema. Feito isso, vamos adicionar o serviço no chkconfig conforme comando abaixo:

[root@matrix ~]# chkconfig --add rsync
O Serviço não suporta o chkconfig

O erro acima acontece porque, para o chkconfig identificar o script é necessário haver duas linhas comentadas no script, segue abaixo:

#!/bin/bash
# chkconfig: 345 55 10
# description: rsync

#Script criado para automatização do rsync na inicialização

# Biblioteca de funcoes
 . /etc/rc.d/init.d/functions

PROG='/usr/bin/rsync'
BASE=${0##*/}

# O arquivo de configuracao do rsync tem que conter a linha abaixo:
#  pid file = /var/run/rsync.pid
OPTIONS="--daemon"

case "$1" in
  start)
    echo -n $"Inicializando $BASE: "
    daemon $PROG $OPTIONS
    RETVAL=$?
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$BASE
    echo
    ;;
  stop)
    echo -n $"Finalizando $BASE: "
    killproc $PROG
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$BASE
    echo
    ;;
  restart|force-reload)
    $0 stop
    sleep 1
    $0 start
    ;;
  status)
    status $PROG
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status|force-reload}" >&2
    exit 1
    ;;
esac


Com as duas linhas adicionadas no script é só rodar o comando novamente como segue abaixo:

[root@matrix ~]# chkconfig --add rsync

Feito isso, agora é só ativa-lo na inicialização com o comando abaixo:

[root@matrix ~]# chkconfig rsync on

Ou apenas selecionando o run level desejado:

[root@matrix ~]# chkconfig --level 235 rsync on

Depois é só inicializar o serviço com o comando abaixo:

[root@matrix~]# service rsync start

E para finalizar, segue a explicação para às linhas adicionadas para que o script funcionasse

# chkconfig: 345 55 10
                        |   |   |
                        |   |  prioridade para dar kill nos scripts
                        |   |
                        |   |   prioridade para inicialização dos scripts
                        |
                        run levels para inicializaçãodo serviço

Acho que eras isso, have a nice day =D

Nenhum comentário:

Postar um comentário