博客
关于我
CentOS 7 巨大变动之 systemd 取代 SysV的Init
阅读量:789 次
发布时间: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/

你可能感兴趣的文章
.exe已停止工作_windows资源管理器已停止工作怎么解决
查看>>
900行c语言贪吃蛇,原生js实现的贪吃蛇网页版游戏完整实例
查看>>
ado读取多条oracle数据,Oracle ADO数据存取
查看>>
anaconda新建python2环境安装不了jupyterlab_anaconda3安装及jupyter环境配置教程(全)...
查看>>
android fastjson漏洞_初识Fastjson漏洞(环境搭建及漏洞复现)
查看>>
android进程管理策略,Android进程保活
查看>>
asp.mvc 4项目发布文件目录结构_如何用SpringBoot(2.3.3版本)快速搭建一个项目?文末有小彩蛋...
查看>>
aspen串联反应怎么输入_如何进步提升串联谐振试验装置的稳定性
查看>>
a推b等价于非a或b_AB胶/蜜月胶常见问题的原因分析及解决方法
查看>>
bat 命令返回结果_【批处理】带你入门命令行
查看>>
c++ string取子串_Integer与String的设计哲学
查看>>
c++ 数组批量赋值_数组之间不能赋值?穿个马甲吧!
查看>>
cad模糊查询符号_mysql 正则模式和like模糊查询
查看>>
continue可以用if判断里面吗_谁能说说if()else()里的continue是干嘛的?
查看>>
ctrl c 和 ctrl v 不能用了_神奇操作,原来CTRL键还能这么用
查看>>
cytoscape安装java_Cytoscape史上最全攻略
查看>>
c语言程序设计年历显示,C语言程序设计报告《万年历》.doc
查看>>
C语言程序设计梁海英答案,1.5 习题
查看>>
c语言编写单片机中断,C语言AVR单片机中断程序写法
查看>>
#pragma region、{}
查看>>