Warum ist sssd ein nicht erkannter Dienst, obwohl er installiert ist und neu gestartet werden kann?

Warum ist sssd ein nicht erkannter Dienst, obwohl er installiert ist und neu gestartet werden kann?

Warum ist sssd ein nicht erkannter Dienst, obwohl er installiert ist und neu gestartet werden kann? BTW: Dies betrifft Ubuntu 14.04.1 LTS, bei 12.04 war das nicht so. Ich werde weiter unten zeigen, was ich meine, ich denke, es ist ein Fehler, aber ich bin an einer Erklärung und/oder einem Workaround interessiert.

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# 

Übrigens: sssd ist anscheinend ein neues Tag, es wäre schön, wenn es hinzugefügt würde.

Antwort1

Wenn Sie ausführen serviceund ein Sysv-Init-Skript vorhanden ist, wird dieses Skript aufgerufen (oder Upstart, wenn es sich um einen Upstart-Job handelt):

$ 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 "}")

Wenn Sie keinen Befehl ( restart, status, usw.) übergeben, können natürlich nur diese Skripte antworten. Wenn die Init-Datei für einen Dienst nur Upstart ist, schlägt dies fehl:

$ service tty1
tty1: unrecognized service

SSSD bietet nur ein Upstart-Init-Skript, wie Sie aus der Liste der Dateien insssd-common.


Dieses Verhalten ist nicht gerade gut dokumentiert in dermanpage. Wenn Sie sich jedoch den serviceBefehl ansehen, bei dem es sich um ein Shell-Skript handelt:

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  

Die Aktionen hierin casebestehen aus execAufrufen von initctl(über die symbolisch verknüpften Versionen - start, stop, usw.). Da die ACTIONVariable leer ist und auf keinen Fall zutrifft, fällt sie durch zu:

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

Hier können Sie sehen, warum dieser Fehler auftritt.

verwandte Informationen