script de init que registra a saída do script

4

Como isso pode ser feito? Eu sei que é bastante simples e inclui acrescentar algo como & ou &> ao comando real que inicia o script de inicialização.

Mas, qual é a melhor abordagem e como pode ser garantido que o script de inicialização se separe, suponha que o arquivo de log seja /var/log/customDaemon.log?

Aqui está o script de init que eu tenho. Eu também não tenho certeza se a abordagem no script é legal ou apenas um truque desagradável.

#!/bin/bash
#
# /etc/rc.d/init.d/customDaemon
#
# description: "The Daemon"
# processname: customDaemon
# pidfile: "/var/run/customDaemon.pid"

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

start() {
    echo "Starting customDaemon"
    /var/customDaemon &> /dev/null &
    return 1
}

stop() {
    echo "Stopping tweriod"
    prockill customDaemon   
    return 2
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        stop
        start
    ;;
    reload)
        restart
    ;;
    status)
        status customDaemon
    ;;
    *)
        echo "Usage: customDaemon [start|stop|restart|status]"
        exit 1
    ;;
esac
    
por kapeels 16.10.2011 / 14:43

2 respostas

7

Tente isto:

/var/customDaemon >> /var/log/customDaemon.log 2>&1 &

Sugiro que você execute o serviço com um usuário normal em vez de root .

Para mostrar as mensagens [OK] , [FAILED] , você pode verificar o status de saída, algo assim:

/var/customDaemon >> /var/log/customDaemon.log 2>&1 &
RETVAL=$?
[ $RETVAL = 0 ] && echo -ne '\t\t\t\t\t[  3[32mOK3[0m  ]\n'

Você também pode ver as funções predefinidas em /etc/rc.d/init.d/functions : daemon , killproc , action , ...

/var/customDaemon >> /var/log/customDaemon.log 2>&1 &
RETVAL=$?
[ $RETVAL = 0 ] && action $"Starting customDaemon... " /bin/true
    
por 16.10.2011 / 16:38
1

Substitua / dev / null por um nome de arquivo para registro.

start() {
    echo "Starting customDaemon"
    /var/customDaemon > /var/log/customDaemon/console.log &
    return 0
}

Eu também alterei o código de retorno, porque se ele for iniciado, ele deverá retornar 0 - para o sucesso.

A qualidade do script de inicialização está OK. Não muito desagradável acontecendo, e você tem funções lsb - o que é uma coisa muito boa.

O que poderia ser melhorado, é se o aplicativo suportar o redirecionamento do registro em si, para que você possa agrupar as coisas corretamente com o logrotation.

Também seria bom verificar se o daemon foi iniciado com sucesso e lançar um erro (e sair 1) se ele falhar.

    
por 16.10.2011 / 14:49