68

我总是以这种方式运行我的 Apache 服务器:

sudo service apache2 start

但在许多指南中,我看到了这样的命令:

sudo systemctl start apache2

有人可以简短地写下这些命令之间的区别,并就我应该在日常工作中使用什么命令给我建议吗?

4

4 回答 4

48

service对/etc/init.d中的文件进行操作,并与旧的 init 系统一起使用。对/lib/systemdsystemctl中的文件进行操作。如果/lib/systemd中有您的服务的文件,它将首先使用该文件,如果没有,它将回退到/etc/init.d中的文件。此外,如果您使用的是像 ubuntu-14.04 这样的操作系统,则只有 service 命令可用。

因此,如果systemctl可用,最好使用它

于 2017-04-21T10:12:02.430 回答
25

借用这个答案

service是一个“高级”命令,用于不同的UnixLinuxstart中的,restart, stop​​ 和status 服务。根据“较低级别”的服务管理器,服务重定向到不同的二进制文件。

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

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

此外,systemctl从此路径运行服务文件:/lib/systemd/

于 2018-11-30T09:35:32.147 回答
1

服务作为 sysvinit 的帮助脚本开始,后者成为无论有 sysvinit 还是 systemd 都可以工作的包装脚本。

于 2021-01-08T13:16:04.680 回答
0

因为我的选择service更可靠,尤其是在自动化任务中。它为不同的初始化系统包装了命令,因此您可以将它用于较旧的发行版并期望得到相同的结果。在我的观察中reload,当 systemd 单元正常工作时,通常没有工作命令(更新守护进程配置而不杀死进程)service <service-name> reload

于 2021-06-30T12:58:15.700 回答