service 和 systemctl 有什么区别?

service 和 systemctl 有什么区别?

也许这是一个微不足道的问题,但我并不完全清楚。在我们的一台服务器上,我们运行了一些由 启动的后台进程service,还有一些由 启动的后台进程systemctl,如下所示:

$ service nginx start
$ systemctl start gunicorn

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

答案1

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

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

service对于基本的服务管理来说已经足够了,而直接调用systemctl可以提供更多的控制选项。

答案2

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

使用service您只能执行与服务相关的命令(即statusreloadrestart),而使用systemctl您可以使用更高级的命令,例如:

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

或屏蔽服务:

systemctl mask name.service

有很多关于这一页来自 Ask Ubuntu。

答案3

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

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

同样的故事chkconfig

相关内容