Systemctl 和 service 命令的区别

Posted

技术标签:

【中文标题】Systemctl 和 service 命令的区别【英文标题】:Difference between Systemctl and service command [closed] 【发布时间】:2017-09-18 04:04:08 【问题描述】:

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

sudo service apache2 start

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

sudo systemctl start apache2

谁能简单地写出这些命令之间的区别,并就我应该在日常工作中使用什么命令给我建议?

【问题讨论】:

Difference between Systemctl and Service 【参考方案1】:

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

所以如果有systemctl的话最好还是用一下

【讨论】:

根据this answer,service 是所有三个初始化系统(/init、systemd 和 upstart)的包装器。 丹·斯温是对的。 service 是一个包装器,因此它比 systemctl 更可取,只有在 /etc/systemd/system/ 中有 apache 服务配置时才有效【参考方案2】:

借用this answer:

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

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

service 足以进行基本的服务管理,而直接 调用systemctl 提供更多控制选项。

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

【讨论】:

将“投票关闭”作为副本而不是复制/粘贴另一个答案不是更好吗? @rinogo 这不仅仅是复制/粘贴。实际上,它是一种指定的参考和引用。这个答案的给定分数也表明这个答案在这个空白处是需要的。请记住,我们的目标是尽可能缓解和解决提问者的问题。【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于Systemctl 和 service 命令的区别的主要内容,如果未能解决你的问题,请参考以下文章

docker服务启动:service docker start和systemctl start docker两种命令有什么区别?

init,service和systemctl的区别

linux chkconfig 和 systemctl 区别 & 对比

service与systemctl命令比较

Linux中 service 和 systemctl 命令比较

关于service,systemctl,chkconfig,init