Systemctl 和服役指挥的区别

我总是这样运行我的 Apache 服务器:

sudo service apache2 start

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

sudo systemctl start apache2

有没有人能简短地写出这些命令之间的区别,并给我一些建议,告诉我在日常工作中应该使用哪些命令?

33291 次浏览

service操作 /etc/init.d中的文件,并与旧的 init 系统一起使用。systemctl操作 /lib/systemd中的文件。如果在 /lib/systemd中有一个服务文件,它将首先使用该文件,如果没有,它将返回到 /etc/init.d中的文件。 另外,如果你使用像 ubuntu-14.04这样的操作系统,只有 service 命令是可用的。

因此,如果 Systemctl可用,那么最好使用它

这个答案借款:

service是用于 startrestart,stopstatus的“高级”命令 在不同的 UnixesLinux的服务 “低级”服务管理器,服务重定向在不同的 二进制文件。

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

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

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

服务最初是 sysvinit 的一个帮助脚本,后来变成了一个包装器脚本,不管 sysvinit 或 systemd 是什么都可以工作。

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