【发布时间】:2017-09-18 04:04:08
【问题描述】:
我总是以这种方式运行我的 Apache 服务器:
sudo service apache2 start
但在许多指南中,我看到了这样的命令:
sudo systemctl start apache2
谁能简单地写出这些命令之间的区别,并就我应该在日常工作中使用什么命令给我建议?
【问题讨论】:
标签: apache ubuntu service systemctl
我总是以这种方式运行我的 Apache 服务器:
sudo service apache2 start
但在许多指南中,我看到了这样的命令:
sudo systemctl start apache2
谁能简单地写出这些命令之间的区别,并就我应该在日常工作中使用什么命令给我建议?
【问题讨论】:
标签: apache ubuntu service systemctl
service 对 /etc/init.d 中的文件进行操作,并与旧的 init 系统一起使用。 systemctl 对 /lib/systemd 中的文件进行操作。如果 /lib/systemd 中存在您的服务的文件,它将首先使用该文件,如果没有,它将回退到 /etc/init.d 中的文件。
此外,如果您使用的是 ubuntu-14.04 等操作系统,则只有 service 命令可用。
所以如果有systemctl的话最好还是用一下
【讨论】:
service 是所有三个初始化系统(/init、systemd 和 upstart)的包装器。
service 是一个包装器,因此它比 systemctl 更可取,只有在 /etc/systemd/system/ 中有 apache 服务配置时才有效
借用this answer:
service是用于start、restart,、stop和status的“高级”命令 不同 Unixes 和 Linuxes 中的服务。取决于 “低级”服务管理器,服务重定向不同 二进制文件。例如,在 CentOS 7 上它重定向到 systemctl,而在 CentOS 6 上 它直接调用了相对的
/etc/init.d脚本。在另一 手,在较旧的 Ubuntu 版本中,它重定向到新贵。
service足以进行基本的服务管理,而直接 调用systemctl提供更多控制选项。
此外,systemctl 从该路径运行服务文件:/lib/systemd/
【讨论】:
服务作为 sysvinit 的帮助脚本开始,后者成为无论有 sysvinit 还是 systemd 都可以工作的包装脚本。
【讨论】:
对于我的选择service 更可靠,尤其是在自动化任务中。它为不同的初始化系统包装了命令,因此您可以将它用于较旧的发行版并期望得到相同的结果。在我的观察中,当 systemd 单元通常与 service <service-name> reload 一起工作时,通常没有工作的 reload 命令(更新守护进程配置而不杀死进程)。
【讨论】: