service 和 systemctl 有什么区别?

Aid*_*tis 67 service systemctl

也许这是一个微不足道的问题,但对我来说并不完全清楚。在我们的一台服务器上,我们运行了一些后台进程,它们以 开头,service而其他一些以 开头systemctl,如下所示:

$ service nginx start
$ systemctl start gunicorn
Run Code Online (Sandbox Code Playgroud)

这两个命令有什么区别?哪一种是处理后台服务的首选方式?如何配置首选命令?

sho*_*hok 71

service是一个“高级”命令,用于在不同的 unix 和 linux 中启动和停止服务。根据“低级”服务管理器,service重定向不同的二进制文件。

例如,在 CentOS 7 上它重定向到systemctl,而在 CentOS 6 上它直接调用相关/etc/init.d脚本。另一方面,在较旧的 Ubuntu 版本中,它重定向到upstart

service足以进行基本的服务管理,而直接调用systemctl提供了更多的控制选项。


小智 19

systemctl基本上是一个更强大的版本service

Withservice您只能执行与服务相关的命令(即status, reload, restart),而 withsystemctl您可以使用更高级的命令,例如:

systemctl is-failed name.service # check if service failed to load

或掩蔽服务:

systemctl mask name.service

这个页面上有很多来自 Ask Ubuntu的好信息。

  • 请注意,虽然更强大,但“systemctl”并不是“service”的新版本。它并不是为了取代“服务”而设计的。相反,“service”被设计为一个高级包装器,用于“抽象”出各种服务管理器,例如“init.d”、“initctl”和(当然)“systemctl”。 (4认同)

小智 6

systemctl是控制守护进程/服务的主要实用程序systemd
service命令是SysVinit世界上的传统实用程序。

systemd 的功能之一是与 SysVinit/legacy 命令兼容,
因此,如果您拥有该systemctl命令,
service foo start它将是systemctl start foo.

同样的故事chkconfig