Escrevendo o daemon, /etc/rc.d/init.d/functions trava

3

Eu estou escrevendo meu próprio daemon de serviço para o Fedora 23 e eu permaneci, quando meu script trava ao incluir a biblioteca de funções de origem.

#!/bin/sh
#
# service-live-text-relation <summary>
#
# chkconfig:   2345 80 20
# description: Starts and stops a single service-live-text-relation instance on this system
#

### BEGIN INIT INFO
# Provides: service-live-text-relation
# Required-Start: $network $named
# Required-Stop: $network $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: This service manages the service-live-text-relation daemon
# Description: service-live-text-relation
### END INIT INFO

#
# init.d / servicectl compatibility (openSUSE)
#
if [ -f /etc/rc.status ]; then
    . /etc/rc.status
    rc_reset
fi

echo "test1"

#
# Source function library.
#
if [ -f /etc/rc.d/init.d/functions ]; then
    . /etc/rc.d/init.d/functions
fi

#. /etc/init.d/functions

echo "test2";

#... further code goes here ...

Eu corro os seguintes comandos:

/bin/systemctl daemon-reload
chkconfig --add service-live-text-relation
chkconfig service-live-text-relation on
/bin/systemctl enable service-live-text-relation.service

Quando eu corro:

service service-live-text-relation start

Eu dou a seguinte saída:

test1
Starting service-live-text-relation (via systemctl):

E o script trava ...

Eu segui pelo exemplo assistindo a outros scripts, mas não consigo reconhecer o que pode estar incorreto no meu script.

    
por Athlan 06.07.2016 / 23:57

1 resposta

3

Eu acredito que você está sendo mordido pela compatibilidade do sistema. Nos sistemas com systemd, os arquivos em /etc/init.d são manipulados pelo systemd. O comando "service" é apenas um script de shell que tenta ser "fofo" (útil) sobre como iniciar um serviço para você. Você tentou apenas executar manualmente '/etc/init.d/service-live-text-relation'?

Não tenho ideia de como a compatibilidade com o sistema funciona, por isso não posso ajudá-lo. Se você tiver os alvos "start", "stop", "restart" (etc) adequados, como outros scripts de controle de serviço init.d, então acredito que você possa fazê-los funcionar.

Mas ... você realmente deve criar um arquivo de unidade systemd. Talvez tente adicionar um arquivo de unidade em / etc / systemd / user chamado 'service-live-text-relation.service'. Confira 'man systemd.service' (e todos os seus amigos). Está se tornando um mundo systemd, então você também pode atualizar seu arquivo inicial. IMHO.

    
por 07.07.2016 / 00:05