Systemctl和服务命令之间的区别

Rom*_*nov 12 apache ubuntu

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

sudo service apache2 start
Run Code Online (Sandbox Code Playgroud)

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

sudo systemctl start apache2
Run Code Online (Sandbox Code Playgroud)

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

Ben*_*ari 19

借用这个答案

service是用于一个“高水平”命令startrestart, stopstatus 在不同的服务的UnixLinux版本。根据“低级”服务管理器,服务重定向到不同的二进制文件。

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

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

systemctl从此目录运行服务文件:/lib/systemd

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

sha*_*hin 7

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

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

  • 丹·斯温是对的。`service` 是一个包装器,因此它比 `systemctl` 更可取,它只有在 `/etc/systemd/system/` 中有 `apache` 服务配置时才有效 (5认同)
  • 根据[此答案](https://askubuntu.com/a/903405/790184),“ service”是所有三个init系统(/ init,systemd和upstart)的包装。 (3认同)