CentOS 7 巨大变动之 systemd 取代 SysV的Init
发布日期:2025-03-31 00:52:04 浏览次数:7 分类:精选文章

本文共 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:

上一篇:Centos 7 快速安装FTP服务
下一篇:centos 7安装docker

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月25日 06时18分25秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章