Por que sssd é um serviço não reconhecido, mesmo que esteja instalado e possa ser reiniciado?

5

Por que o sssd é um serviço não reconhecido, embora esteja instalado e possa ser reiniciado? BTW: Isso diz respeito ao Ubuntu 14.04.1 LTS, não foi assim em 12.04 Vou mostrar o que quero dizer abaixo, acho que é um bug, mas estou interessado em uma explicação e / ou solução 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# 

BTW: sssd é aparentemente uma nova tag, seria bom se fosse adicionado.

    
por jringoot 04.12.2014 / 17:47

1 resposta

5

Quando você executar service , se houver um script init do sysv, ele chamará esse script (ou chamará Upstart, se for um trabalho do 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, se você não passar um comando ( restart , status , etc.), somente esses scripts poderão responder. Se o arquivo init para um serviço for somente Upstart, isso falhará:

$ service tty1
tty1: unrecognized service

O SSSD oferece apenas um script init Upstart, como você pode ver na lista de arquivos em sssd-common .

Esse comportamento não está exatamente documentado na página do manual . No entanto, se você examinar o comando service , que é um 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  

As ações nesse case consistem em exec chamadas de initctl (por meio de suas versões com link simbólico - start , stop , etc.). Como a variável ACTION está vazia e não corresponde a nenhum caso, ela passa para:

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

Aqui você pode ver porque isso produz o erro.

    
por muru 04.12.2014 / 18:02