systemd 是一种新型init系统「译者注:每一个操做系统都有一个启动程序,而Linux init是Linux系统操做中不可缺乏的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化全部的设备驱动程序和数据结构等)以后,就经过启动一个用户级程序init的方式,完成引导进程。因此init始终是第一个进程(其进程编号始终为1)」,最先在Fedora中使用「译者注:据维基百科资料:http://en.wikipedia.org/wiki/Systemd#Adoption,最先使用 systemd 的是gentoo,最先使用并成为默认 init system 的是openSUSE。」,通过调整适应了其它许多发行版,例如RedHat、Suse和CentOS。html
历史上,咱们大部分人用过传统的SysV init 初始化脚本,它一般状况下在/etc/rc.d/init.d/文件夹下。这些脚本调用守护进程二进制代码,在后台fork一个进程。linux
尽管shell脚本很是的灵活,可是很难实现像superviseing(监管)进程和并行执行命令这样的任务。git
经过对systemd的新式守护进程的介绍,咱们发现systemd能够在runtime(运行时)更加简单的监管和控制守护进程,而且简化了监控的实现方式(implementation)。github
systemctl命令是systemd团队一个很是好的独创。shell
这个命令可以显示更多的详细错误信息和包括启动错误在内的服务运行时错误。systemd引入了一个新术语:cgroups(控制组),它基本上是可被分层次安排的进程任务组。「译者注:这里简单介绍一下cgroup(control group)称为Containers,Containers着眼于资源的分配,利用configfs做配置。它有两个重要概念:第一是subsystem,内核能够给进程提供的服务/资源;第二是container,一个进程组,成员共享一样的一个或多个子系统分配限制。Containers是分层次的,一个container能够hold多个container。它的可取之处是建立了一个资源分配的框架,其它开发者能够利用这个框架去开发本身的资源分配patch,好比磁盘设备。」centos
若是仅仅经过原来的初始化系统,决定哪一个进程是作什么的、属于哪一个用户的变得愈来愈困难。数据结构
可是经过systemd,当一个进程派生其它进程时,这些子进程会被自动变成父进程控制组的成员,这样一来就能够避免继承的混乱。框架
有许多新的运行在 rhel / centos 7.0 上的 systemd 命令能够替代 sysvinit 的对应命令。你也能够下载 本文的 PDF 版本。ide
via: http://linoxide.com/linux-command/systemd-vs-sysvinit-cheatsheet/spa
做者:Bobbin Zachariah 译者:szrlee 校对:wxy