为什么 sssd 是无法识别的服务,即使它已安装并且可以重新启动?

jri*_*oot 7 services pam 14.04 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# 
Run Code Online (Sandbox Code Playgroud)

顺便说一句:sssd 显然是一个新标签,如果添加它会很好。

mur*_*uru 7

当你运行时service,如果有一个 sysv init 脚本,它会调用那个脚本(或者调用 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 "}")
Run Code Online (Sandbox Code Playgroud)

当然,如果您不传递命令(restartstatus等),则只有这些脚本能够响应。如果服务的 init 文件是 Upstart-only,这将失败:

$ service tty1
tty1: unrecognized service
Run Code Online (Sandbox Code Playgroud)

SSSD 只提供一个 Upstart init 脚本,你可以从sssd-common.


这种行为在联机帮助页中没有很好地记录。但是,如果您检查service命令,它是一个 shell 脚本:

$ 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 "}")
Run Code Online (Sandbox Code Playgroud)

在这个行动case包括exec的电话initctl(通过其符号链接的版本- startstop等)。由于ACTION变量为空并且不匹配任何情况,因此它会落入:

$ service tty1
tty1: unrecognized service
Run Code Online (Sandbox Code Playgroud)

在这里您可以看到为什么会产生该错误。