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
是用于start
、restart,
、stop
和status
的“高级”命令 不同 Unixes 和 Linuxes 中的服务。取决于 “低级”服务管理器,服务重定向不同 二进制文件。例如,在 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两种命令有什么区别?
linux chkconfig 和 systemctl 区别 & 对比