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 service
comando, 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 case
consistem em exec
chamadas de initctl
(por meio de suas versões com links simbólicos - start
, stop
, etc.). Como a ACTION
variá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.