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 service
und 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 service
Befehl 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 case
bestehen aus exec
Aufrufen von initctl
(über die symbolisch verknüpften Versionen - start
, stop
, usw.). Da die ACTION
Variable 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.