service和systemctl有什么区别?


33

也许这是一个微不足道的问题,但是对我来说还不是很清楚。在我们的其中一台服务器上,我们运行着service一些开始于的后台进程,还有一些其他开始于的进程systemctl,如下所示:

$ service nginx start
$ systemctl start gunicorn

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


3
有一个很好的解释
费利克斯·布吕

痛苦的部分是,有人说服务已“不存在”,如果不是的话,为什么他们会像“ find / grep / locate”等一样改变参数的顺序……在Linux版本中不一致
killjoy18年

Answers:


37

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

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

service对于基本服务管理已足够,同时直接调用可systemctl提供更大的控制选项。


9

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

随着service你只能做相关的服务命令(即statusreloadrestart),而与systemctl可以使用更高级的命令,如:

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

或掩蔽服务:

systemctl mask name.service

Ask Ubuntu 在此页面上有很多很好的信息。


1

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

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

同样的故事chkconfig

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.