当前位置: 首页 >应用方案 >技术应用 >

系统与服务管理器systemd详解

1. 什么是systemd

在现代Linux系统中,systemd是一种最常用的系统与服务管理器。

systemd的主要作用是在系统启动时初始化并管理系统进程、服务、硬件、网络等系统资源,并提供服务依赖管理、日志管理等功能。

同时,systemd还提供了一些工具,帮助用户更方便地管理系统服务和其他系统资源。


2. 如何在Linux系统中找到systemd的身影

Linux系统中,systemd 的存在可以通过检查1号进程来确认:

首先检查系统中的1号进程,会发现它是系统的init进程,它负责初始化系统并启动其他进程。

g@GitExp:~$ ps aux | grep init
root          1 0.0  0.1 225472 9344 ?        Ss   1223   0:07 /sbin/init splash

Linux发展历程中,不同的Linux发行版本使用的初始化系统有差别,但是这些初始化程序都是作为1号进程来运行,因此我们可以详细检查我们的1号进程是否由systemd提供

检查init的连接:

g@GitExp:~$ ll /sbin/init
lrwxrwxrwx 1 root root 20 3  2 2023 /sbin/init -> /lib/systemd/systemd*

在现代Linux 系统中,systemd 作为系统的初始化系统,通常会取代传统的 init。但是,系统的 init 进程有时仍然会以 /sbin/init 作为启动的命令出现,并软连接指向实际地址。

也可以直接检查:

g@GitExp:~$ ps -p 1
 PID TTY          TIME CMD
   1 ?        00:00:07 systemd

3. systemd的主要特点

systemd具有许多现代化的特点和优势,使其成为目前大多数Linux系统中首选的管理器。

1)Unit 机制:systemd使用unit配置文件来管理服务、挂载点、设备等系统资源,它是systemd其他功能的基础机制。

2)服务依赖管理:在unit机制下,通过服务依赖,可以精确控制服务的启动顺序。

3)并行启动服务:systemd支持并行启动多个服务,而不是像传统init系统那样逐个依次启动,能够显著减少系统启动的时间。

4)进程监控与自动重启:systemd支持监控进程的运行状态,并能够在服务崩溃时自动重启服务。这为系统提供了更高的稳定性。

5)资源控制:systemd可以利用 Linux 内核的cgroups功能,控制系统资源的使用,如 CPU、内存、磁盘 I/O 等。可以更好地分配系统资源,避免某个进程占用过多资源导致系统不稳定。

6)日志管理:systemd包含了一个内置的日志系统journald,用于收集系统和服务的日志。通过journalctl命令可以方便地查看和管理日志信息,并且支持日志过滤和搜索。

7)统一管理接口:systemd提供了一个统一的命令行工具systemctl,用于管理系统服务、启动、停止、重启等操作。

8)目标机制:systemd使用目标(target)来管理系统状态。例如,multi-user.target 表示多用户模式,相当于传统的运行级别 3。通过目标机制,管理员可以灵活控制系统的运行状态。


4. systemd的历史

探讨了systemd的特点后,我们就能够大概了解,为什么systemd可以在众多Linux的初始化程序中脱颖而出。

除了systemd,还有一些常用的初始化程序,例如SysV Init、Upstart等。

SysV Init: SysV Init最早出现在Unix系统中,后来也成为了初代Linux系统的标准初始化系统。但是因为串行启动速度慢、发杂的脚本化管理、没有依赖机制导致被慢慢主流淘汰。

Upstart:Upstart在SysV Init的基础上引入了事件驱动模型、并支持并发启动,出现后迅速大面积替代了 SysV Init,但是后来因为与systemd竞争失败并且缺少后续维护,慢慢也被主流淘汰。

systemd: sysmted因支持并行启动和依赖管理,集成日志和资源控制等功能,并提供了统一管理的工具,让它成为了目前Linux系统的主流管理器,并大面积使用至今。

5.systemd目前的劣势

1)学习困难:由于 systemd 功能复杂,使用者可能需要更多的时间来学习如何配置和管理 systemd 服务。

2)过于复杂的设计:有些用户认为systemd的设计过于庞大和复杂,尤其是其“一体化”设计,可能导致不必要的功能和增加了系统的复杂性。

3)与传统系统兼容不完美:虽然目前大部分Linux发行版本都使用systemd,并且systemd一直在致力于提升兼容性问题,但因为复杂的涉及,可能会导致在Linux中移植较老的服务或传统init服务到systemd时候会遇到很多兼容问题。

所以systemd能够脱颖而出是因为它除了优秀的初始化机制,还提供了其他初始化系统不具备的功能和工具,并且随着时间的推移,systemd 的优势将更加显著对用户来说,理解其复杂性以及它本身潜在的劣势依然还是一个挑战。



今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多通信技术资料,感兴趣的小伙伴可以登录我们的亿佰特官网进行了解,也可以直接拨打400电话咨询技术专员!


相关阅读:

1、【服务器】Nginx Proxy Manager申请cloudflare泛域名教程

2、Dell服务器PowerEdge R730xd部署ESXI服务器部署教程

3、如何在本地搭建代码托管平台Gitea案例教程

4、Chirpstack服务器简介和搭建教程

5、DNS解析服务systemd-resolved的常用命令


亿佰特官网 4000-330-990

https://www.wjx.cn/jq/84863372.aspx