¿Por qué sssd es un servicio no reconocido, aunque esté instalado y se pueda reiniciar?

¿Por qué sssd es un servicio no reconocido, aunque esté instalado y se pueda reiniciar?

¿Por qué sssd es un servicio no reconocido, aunque esté instalado y se pueda reiniciar? Por cierto: esto se refiere a Ubuntu 14.04.1 LTS, no era así en 12.04. Mostraré lo que quiero decir a continuación, creo que es un error pero estoy interesado en una explicación y/o solución 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# 

Por cierto: sssd es aparentemente una etiqueta nueva, sería bueno si se agregara.

Respuesta1

Cuando ejecuta service, si hay un script de inicio sysv, llamará a ese script (o llamará a Upstart, si es un trabajo 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, si no pasa un comando ( restart,, statusetc.), sólo estos scripts podrán responder. Si el archivo de inicio de un servicio es sólo Upstart, esto fallará:

$ service tty1
tty1: unrecognized service

SSSD solo ofrece un script de inicio Upstart, como puede ver en la lista de archivos ensssd-common.


Este comportamiento no está exactamente bien documentado en elpágina de manual. Sin embargo, si examina el servicecomando, que es un 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  

Las acciones en esto caseconsisten en execllamadas de initctl(a través de sus versiones con enlaces simbólicos: start, stop, etc.). Dado que la ACTIONvariable está vacía y no coincide con ningún caso, pasa a:

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

Aquí puedes ver por qué produce ese error.

información relacionada