博客
关于我
CentOS 7 巨大变动之 systemd 取代 SysV的Init
阅读量:790 次
发布时间:2023-01-26

本文共 2246 字,大约阅读时间需要 7 分钟。

1 systemd是什么

systemd是一个用户空间程序,属于应用层,不属于Linux内核范畴。与其他发行版不同,factory可以自由改变用户空间的应用程序,因此内核的特征在所有发行版中是统一的。 Nullable샘플:

在Linux内核启动后,用户空间的第一个进程是初始化进程,该进程通常运行于PID1。这种初始化进程的物理文件通常位于 directors/clients, manufacturers可以通过内核参数指定启动的初始程序。各个发行版采用了不同的启动程序,如Ubuntu使用upstart,CentOS7.0使用systemd等。 Nullable샘플:

1.1 CentOS发行版的变化

CentOS6.5采用的是systemV init,而CentOS7.0则全面转型为systemd。 이미지标签已删除。 Nullable샘플:

2 Systemd物理文件组成

systemd是一个庞大的软件包,其物理文件分布如下:

- **配置文件**:位于/Etc/systemd目录下 - **工具命令**:位于/bin和/sbin目录下 - **备用配置文件**:位于/lib/systemd目录下 - 其他文件如手册、库文件也在相应的目录下。 使用rpm -ql系统工具可以详细查看systemd的安装内容。 Nullable샘플:

在systemd下,/etc/inittab的功能已被取代。此文件现在为空,systemd使用目标文件替代原有的运行级概念。例如,/lib/systemd/system/default.target文件定义了默认目标为multi-user目标。 Nullable샘플:

3 Systemd运行原理

3.1 systemd的基本概念

systemd把系统初始化任务划分为多种配置单元,每个单元负责特定功能。常见单元类型包括:

- **Service**:管理服务进程,如httpd、mysqld - **Socket**:管理套接字,用于多个服务共享同一端口 - **Device**:管理udev规则相关的设备 - **Mount**:管理文件系统挂载点 - **Automount**:自动挂载点,类似autofs - **Swap**:管理交换分区 - **Target**:定义逻辑分组,类似SystemV的运行级 - **Timer**:定义定时任务,替代atd、crond等工具 - **Snapshot**:记录系统运行状态

每个单元都有对应的配置文件,且管理员需要编写和维护这些文件。 Nullable샘플:

3.2 依赖关系

systemd通过“要求"和“想要"两个依赖关系管理单元间的依赖。 обыч情况下,systemd会尝试忽略“想要"类型的依赖以防止死锁。 Nullable샘플:

3.3 Target和Runlevel

systemd使用目标文件替代了SystemV的运行级文件。默认目标为multi-user.target,相当于运行级3,graphical.target相当于运行级5。 表1展示了Sysvinit运行级别与Systemd目标的对应关系。 Nullable샘플:

3.4 并发启动原理

Systemd实现并发启动的关键在于预处理依赖,如套接字、D-Bus和文件系统等。通过利用操作系统的文件句柄传递和缓存机制,systemd避免了传统串行依赖,从而提升了系统启动速度。 Nullable샘플:

4 Systemd配置使用

4.1 对于开发人员

为开发人员,编写systemd配置文件是关键。示例包括:

SSH服务的配置文件如下:

```bash [Unit] Description=OpenSSH server daemon [Service] EnvironmentFile=/etc/sysconfig/sshd ExecStartPre=/usr/sbin/sshd-keygen ExecStart=/usr/sbin/sshd –D $OPTIONS ExecReload=/bin/kill –HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target ```

代码解释了如何启动并管理sshd服务。 Nullable 샘플:

4.2 对于系统管理员

systemctl是systemd管理工具,替代了传统的service、chkconfig等命令。表2展示了systemctl与老规则的对应关系。 Nullable 샘플:

systemd还集成了电源管理功能。表3列举了一些常用的systemctl命令及操作。 Nullable 샘플:

4.3 其他功能

systemd还支持多席位管理和电源管理,通过logind实现用户会话管理。 logind 接管ConsoleKit的功能,负责用户登录、电源管理、会话跟踪等。 Nullable 샘플:

5 总结

Systemd颠覆了传统的init系统,展示出惊人的并发启动能力和全面的管理功能。它不仅替代了sysvinit,还扩展了功能范围,成为一种全面的系统管理环境。标准化的接口让不同Linux发行版的开发者和管理员能够更高效地工作,同时减少了系统管理员的负担。 Null Sampel:

转载地址:http://euryk.baihongyu.com/

你可能感兴趣的文章
Python&aconda系列:cmd/powershell/anaconda prompt提示“系统找不到指定的路径”(亲测有效)
查看>>
Python&aconda系列:(W&L)Conda使用faiss-gpu报错及解决办法、安装numpy的坑、cmd执行Python脚本找不到第三方库、安装tensorflow-gpu时遇到的from
查看>>
python&anconda 系列:Pycharm在debug问题的N种解决方案(一般程序、web方向、人工智能方向)
查看>>
python&anconda系列(亲测有效):tensorflow AttributeError: ‘str’ object has no attribute ‘decode’
查看>>
python&anconda系列:tf.keras.backend.get_session()和keras.backend.get_会话()返回不同的会话对象(待解答)
查看>>
"WARNING: Increasing RAM size to 1GB" and "Cannot set up guest memory 'xxx.ram': Invalid argument".
查看>>
#if 0 #elif 1 #else #endif 用法
查看>>
(反射+内省机制的运用)简单模拟spring IoC容器的操作
查看>>
(转)tomcat7.0 manager app和host manager web管理
查看>>
.Net(C#)实现异步编程
查看>>
.Net中webBrowser控件JS交互
查看>>
02-Docker镜像分类及操作秘籍,轻松掌握导出、导入、删除
查看>>
04-docker-commit构建自定义镜像
查看>>
04-docker系列-commit构建自定义镜像
查看>>
05-docker系列-使用dockerfile构建镜像
查看>>
09-docker系列-docker网络你了解多少(下)
查看>>
10-docker系列-docker文件共享和特权模式
查看>>
#C2#S2.2~S2.3# 加入 factory/objection/virtual interface 机制
查看>>
#C8# UVM中的factory机制 #S8.1.1# OOP 语言三大特性 systemverilog的支持
查看>>
#C8# UVM中的factory机制 #S8.1.4# 约束的重载
查看>>