service和systemctl有什么区别?

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

 $ service nginx start $ systemctl start gunicorn 

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

service是一个“高级”命令,用于启动和停止不同unixes和linuxes中的服务。 根据“低级”服务pipe理器, service在不同的二进制文件上redirect。

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

service对于基本的服务pipe理是足够的,而直接调用systemctl给予更多的控制选项。

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

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

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

或掩蔽服务:

systemctl mask name.service

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