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

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

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

usr@server:~$ sudo service <servicename> restart
usr@server:~$

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

* Stopping <servicename>     [ OK ]
* Starting <servicename>     [ OK ]

答案1

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

首先,Ubuntu 在早期版本中并没有这样做。Ubuntu 是一个新贵系统,仅存在了不到十年,而service这些年来,Ubuntu 上的命令行为一直与您预期的不同。您可以service在图像中看到命令的新贵行为如何让服务命令在 15.10 中打印输出?

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

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

命令service可能相同……但 Debian/Ubuntuservice命令是一个 shell 脚本,它会尝试自动检测 upstart 还是 systemd 是正在运行的系统服务管理器,并为 upstart 和 systemd 运行实际的本机服务管理命令。它为 upstart 和 systemd 执行两个几乎完全不同的代码路径。

upstart 的原生服务管理命令包括initctl start、等等。这些命令运行时都会打印消息initctl stopinitctl status

systemd 的原生服务管理命令包括systemctl start、等。这些命令运行时不会打印任何输出systemctl stopsystemctl status

进一步阅读

答案2

实际上你不需要 OK 输出。没有输出意味着 OK。当服务无法正常启动时,Ubuntu 会向你显示类似以下内容:

php5.6-fpm.service 的作业失败,因为控制进程退出并显示错误代码。有关详细信息,请参阅“systemctl status php5.6-fpm.service”和“journalctl -xe”。

在我的例子中,这个例子是我的 php-fpm.conf 上的错误配置导致服务无法启动。按照说明操作后,我找到了导致错误的原因。

相关内容