也许这是一个微不足道的问题,但是我不完全清楚。 在我们的一台服务器上,我们有一些后台进程正在运行,这些进程是由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您只能执行与服务相关的命令(即status , reload , restart ),而使用systemctl可以使用更高级的命令,例如:
systemctl is-failed name.service # check if service failed to load
或掩蔽服务:
systemctl mask name.service
Ask Ubuntu的这个页面有很多很好的信息。