Почему sssd является неопознанной службой, хотя она установлена ​​и может быть перезапущена?

Почему sssd является неопознанной службой, хотя она установлена ​​и может быть перезапущена?

Почему sssd является нераспознанной службой, хотя она установлена ​​и может быть перезапущена? Кстати: Это касается Ubuntu 14.04.1 LTS, в 12.04 такого не было. Ниже я покажу, что я имею в виду. Я думаю, что это ошибка, но мне интересно объяснение и/или обходной путь.

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# 

Кстати: sssd — это, судя по всему, новый тег, было бы неплохо, если бы его добавили.

решение1

При запуске service, если есть сценарий инициализации sysv, он вызовет этот сценарий (или вызовет Upstart, если это задание 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 "}")

Естественно, если вы не передадите команду ( restart, status, и т.д.), только эти скрипты смогут ответить. Если файл init для службы предназначен только для Upstart, это не сработает:

$ service tty1
tty1: unrecognized service

SSSD предлагает только сценарий инициализации Upstart, как вы можете видеть из списка файлов вsssd-common.


Такое поведение не совсем хорошо документировано встраница руководства. Однако, если вы изучите serviceкоманду, которая является скриптом оболочки:

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  

Действия в этом случае caseсостоят из execвызовов initctl(через его симлинкованные версии - start, stop, и т.д.). Поскольку ACTIONпеременная пуста и не соответствует ни одному регистру, она переходит в:

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

Здесь вы можете увидеть, почему возникает эта ошибка.

Связанный контент