服务启动/停止/重启命令没有输出

Edu*_*ria 12 command-line services restart 16.04

我刚刚安装了 Ubuntu 16.04 LTS,发现运行时

usr@server:~$ sudo service <servicename> restart
usr@server:~$
Run Code Online (Sandbox Code Playgroud)

服务重新启动(我可以用 看到状态service <servicename> status),但 shell 直接返回命令行,没有预期的:

* Stopping <servicename>     [ OK ]
* Starting <servicename>     [ OK ]
Run Code Online (Sandbox Code Playgroud)

Jde*_*eBP 9

你不应该期待这样的输出。

首先,Ubuntu 在早期版本中没有这种行为。Ubuntu 是不到十年的新贵系统,而且service这些年来 Ubuntu上的命令行为与您所期望的并不相似。可以serviceHow do I get service command to print output in 15.10?中的图像中看到命令的 upstart 行为.

对于您和去年使用 Ubuntu 15.10 版的人来说,答案几乎相同:

您使用的是 Ubuntu 16.10 版,这是一个 systemd 操作系统。您的系统服务管理不再由 upstart 执行(或在您之前拥有的任何非 Ubuntu 操作系统上执行的任何实用程序)。它由 systemd 执行。

service命令可以是相同的......不过是Debian / Ubuntu的service命令是一个shell脚本,尝试自动检测新贵或systemd是否正在运行的系统服务管理器,并运行新贵和systemd实际的本地服务管理命令。它为 upstart 和 systemd 执行两个几乎完全不同的代码路径。

新贵的本地服务管理命令initctl startinitctl stopinitctl status等等。那些打印消息的时候。

systemd的本地服务管理命令systemctl startsystemctl stopsystemctl status等等。那些在操作时不打印输出。

进一步阅读

  • “你不应该期待这样的输出。” 不是开始回答的好地方。你基本上是在说,“你的意见是错误的”。我想你的意思是“这对 systemd 来说是不可能的”。在新贵的日子里,Ubuntu DID 输出......这是“如何获取服务命令以在 15.10 中打印输出”的问题。在 15.10 之前,Ubuntu 使用 upstart 并且 upstart(如 sysvinit)是冗长的。所以请不要说,“十年都是这样”。它没有。它在 15.10 中发生了变化。Systemd 并不冗长,自从发行版开始部署它以来,它一直非常令人恼火。 (4认同)