如果 systemd 已经取代了 SystemV,为什么它仍然存在,谁在运行这个节目?

Row*_*man 7 debian systemd init sysvinit

我正在运行 Debian 8 x64 并且仍在学习它。我在 Debian 和 Ubuntu 系统上反复遇到的令人困惑的事情之一是似乎有两种运行和管理服务的方式:

  • service
  • systemctl

我已经通读了systemd (systemctl)上的 Debian 页面以及诸如systemd 如何使用 /etc/init.d 脚本之类的问题?

据我目前所知,如今许多 Linux 发行版,包括 Debian 和 Ubuntu,正在摆脱旧的 SysV(系统五)并采用systemd

我可以看到 my/sbin/init是到/lib/systemd/systemd.

问题是:

  • 如果 systemd 已经取代了 SysV,为什么 SysV ( service) 还在?
  • 为什么我可以互换使用两者?如果我在其中启动一个守护进程,另一个会知道它。如何?哪个正在主持节目?
  • 是否有任何真正的理由再使用service或我应该坚持使用systemctl

Ste*_*ris 7

service命令是一个“兼容性”工具,可帮助人们从 sysvinit 迁移到 systemd。这是一个智能程序,它会尝试计算出您当前的init系统,并会根据需要调用 sysvinit、upstart 或 systemd 调用。

你的问题本质上有点“告诉未来”;今天 Debian 允许不同的 init 系统工作,service命令将尝试解决所有问题。但是 Debian 9 呢?谁知道那会支持什么......我们最终可能会superinit替换systemd,并且service命令将被更新......

问题是这个解决方案可能不是跨平台一致的;将service与 CentOS 或 SuSE 一起工作?会systemctl吗?

如果我正在编写自己的东西,那么我只会坚持systemctl所有systemd基于平台的内容,但对我支持的所有操作系统变体进行大量测试。