什么是Linux Systemd及其组件
SystemD是一个专为Linux内核而设计的系统和服务管理器。
它替换了init进程,成为在Linux启动过程中在用户空间中执行的第一个进程(PID = 1)。
在本教程中,我们将研究系统的基础知识。
注意:本教程中的"init"一词是指"sysvinit"。
为什么systemd?
通常是第一个想到的问题。
要了解答案,我们需要先了解一下init。
如果我们只是忘记了SystemD和其他类似的系统,那么可以安全地说init是内核启动任何Linux或者UNIX计算机时的第一个过程。
这意味着所有其他过程都是其儿童以某种方式。
一旦系统成功提升,init过程继续运行并等待像"关机"这样的特殊命令,用于关闭Linux系统。
简而言之,现在init流程的任务是要优雅地关闭系统。
多年来,init仍然是一个完美的系统来提出和关闭基于Linux的系统。
但随着时间的推移,系统变得缓慢而不灵活,特别是对于现代计算机。
因此,建议在2006年和2010年的Systemd替代现有和广泛使用的初始系统。
两个系统都有自己的支持者,并且在长期冲突系统之后被选为新系统来替换init。
systemd vs init cheamsheet显示了两个系统中的命令之间的比较。
安装系统
现在系统在arch,debian,fedora和ubuntu等各种基于Linux的系统中默认启用了系统。
如果我们正在寻找特定版本,我们可以手动安装SystemD。
使用SystemD管理服务
以下是一些有用的系统实用程序的列表以及他们所做的内容的简要说明:
- SystemCtl:控制系统系统和服务。
- journalctl:管理日志,Systemd自己的伐木系统
- hostnamectl:控制主机名。
- lumalectl:配置系统本地和键盘布局。
- timedatectl:设置时间和日期。
- systemd-cgls:显示cgroup内容。
- systemadm:systemctl命令的前端。
让我们考虑一些涉及SystemCtl实用程序的基本示例。
要显示所有系统控件的状态,只需运行no选项的命令:
$systemctl
要查看所有可用的服务,运行与否,请执行以下命令:
$systemctl list-units --type service --all
上面的命令将显示很多信息。
如果我们仅感兴趣,仅在当前加载的服务单位中,请运行以下命令:
$systemctl list-units --type service
要开始服务:
$systemctl start [service-name]
停止服务:
$systemctl stop [service-name]
要重新启动服务:
$systemctl restart [service-name]
要在启动时启用服务:
$systemctl enable [service-name]
要禁用Service从启动开始:
$systemctl disable [service-name]
要检查服务的状态,请运行以下命令:
$systemctl status [service-name]
要查看服务是否已运行,请运行以下命令:
$systemctl is-enabled [service-name]; echo $?
例如:
$systemctl is-enabled sshd.service; echo $?
如果结果为0,则意味着服务当前正在运行,1表示它不是。
要关闭或者重新启动系统,我们可以使用以下命令:
systemctl halt systemctl poweroff systemctl reboot
cgroups的概念
系统组织和管理使用CGroups -A机制进行限制,计费和隔离内核资源使用情况的过程。
在Layman的术语中,它是一个由公共标准绑定的进程集合。
这些组可以是分层的,并且每个组都会从其父级继承限制。
随着新进程的产卵,他们成为父母的CGROUP成员。
一个cgroup被命名为它所属的服务,如果我们需要杀死服务,我们只能杀死其CGROUP,一次性杀死所有流程。
在CGroups词汇表中,每个系统资源,如CPU,内存,磁盘输入/输出,带宽称为子系统或者资源控制器。
Linux内核通过这些CGroups提供对各种子系统(如内存,CPU等)的访问。
CGConfig服务用于管理系统上的层次结构和CGroups。
要使CGConfig Service与SystemD启用,请运行以下命令:
$systemctl enable cgconfig.service
要检查状态或者跟踪任何错误,请运行以下命令:
$systemctl status cgconfig.service
注意:要安装用于管理CGroups的实用程序,我们需要安装libcgroup包。