web-dev-qa-db-fra.com

Pourquoi sssd est-il un service non reconnu, même s’il est installé et peut être redémarré?

Pourquoi sssd est-il un service non reconnu, même s’il est installé et peut être redémarré? BTW: Cela concerne Ubuntu 14.04.1 LTS, ce n'était pas comme ça dans 12.04 je vais montrer ce que je veux dire ci-dessous, je pense que c'est un bug, mais je suis intéressé par une explication et/ou une solution de contournement.

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# 

BTW: sssd est apparemment une nouvelle balise, ce serait bien si elle était ajoutée.

6
jringoot

Lorsque vous exécutez service, s'il existe un script sysv init, celui-ci sera appelé (ou appelera Upstart, s'il s'agit d'un travail 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 "}")
_

Naturellement, si vous ne passez pas de commande (restart, status, etc.), seuls ces scripts pourront répondre. Si le fichier init d'un service est Upstart uniquement, cela échouera:

_$ service tty1
tty1: unrecognized service
_

SSSD propose uniquement un script d’initialisation Upstart, comme le montre la liste des fichiers situés dans sssd-common .


Ce comportement n’est pas parfaitement documenté dans page de manuel . Toutefois, si vous examinez la commande service, qui est un script 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  
_

Les actions de cette case consistent en exec appels de initctl (via ses versions liées - start, stop, etc.). Étant donné que la variable ACTION est vide et ne correspond à aucun cas, elle passe par:

_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
_

Ici, vous pouvez voir pourquoi cela produit cette erreur.

6
muru