Por que o sssd é um serviço não reconhecido, embora esteja instalado e possa ser reiniciado?

Por que o sssd é um serviço não reconhecido, embora esteja instalado e possa ser reiniciado?

Por que o sssd é um serviço não reconhecido, embora esteja instalado e possa ser reiniciado? BTW: Isso diz respeito ao Ubuntu 14.04.1 LTS, não era assim no 12.04. Vou mostrar o que quero dizer abaixo, acho que é um bug, mas estou interessado em uma explicação e/ou solução alternativa.

root@tauriel:~/scripts# service sssd
**sssd: unrecognized service**
root@tauriel:~/scripts# service sssd status
sssd start/running, process 22454
root@tauriel:~/scripts# service sssd restart
sssd stop/waiting
sssd start/running, process 22485
root@tauriel:~/scripts# service sssd status
sssd start/running, process 22485
root@tauriel:~/scripts# service sssd
**sssd: unrecognized service**
root@tauriel:~/scripts# 

Aliás: sssd é aparentemente uma tag nova, seria bom se fosse adicionada.

Responder1

Quando você executa service, se houver um script de inicialização sysv, ele chamará esse script (ou chamará Upstart, se for um trabalho Upstart):

$ service ssh
 * Usage: /etc/init.d/ssh {start|stop|reload|force-reload|restart|try-restart|status}
$ service gdm
/etc/init.d/gdm: 79: /etc/init.d/gdm: Syntax error: "fi" unexpected (expecting "}")

Naturalmente, se você não passar um comando ( restart, status, etc.), apenas esses scripts poderão responder. Se o arquivo init de um serviço for somente do Upstart, isso falhará:

$ service tty1
tty1: unrecognized service

SSSD oferece apenas um script de inicialização Upstart, como você pode ver na lista de arquivos emsssd-common.


Este comportamento não está exatamente bem documentado nopágina de manual. No entanto, se você examinar o servicecomando, que é um script de shell:

118 if [ -r "/etc/init/${SERVICE}.conf" ] && which initctl >/dev/null \
119    && initctl version | grep -q upstart
120 then
121    # Upstart configuration exists for this job and we're running on upstart
122    case "${ACTION}" in  

As ações caseconsistem em execchamadas de initctl(por meio de suas versões com links simbólicos - start, stop, etc.). Como a ACTIONvariável está vazia e não corresponde a nenhum caso, ela passa para:

138 
139 # Otherwise, use the traditional sysvinit
140 if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
141    exec env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" ${ACTION} ${OPTIONS}
142 else
143    echo "${SERVICE}: unrecognized service" >&2
144    exit 1
145 fi

Aqui você pode ver por que isso produz esse erro.

informação relacionada