大佬教程收集整理的这篇文章主要介绍了systemd的作用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
早上群上讨论了一下systemd的作用,还导致了一个人的直接退群,出于求知心理,搜索了一些systemd,对此也作出了一些相应的整理;
学习嵌入式bootloader与kernel衔接的时候,就入门了init进程;init进程也就是系统的第一个进程,PID号为1;
init进程总所周知的问题是从它开始启动,并从下一个程序开始,都是以一个进程启动另一个进程的方式来进行;这样做的显而易见的缺点就是执行速度慢,没有一整套的系统来管理,并且/ect/目录下的随便一个脚本简直长的发指;关机过程差不多是相反的过程,首先init停止所有服务,最后阶段会卸载文件系统。
所以伟大的程序员开始了自己的创作,systemd也就诞生啦。systemd 几乎完全兼容传统的 SysV init 系统: SysV init 脚本可以作为另一种配置文件格式被识别; 提供与 SysV 兼容的 ename">/dev/initctl
接口; 提供各种 SysV 工具的兼容实现; 依然兼容例如 ename">/etc/fstab
或者 之类传统的 Unix 特性。
systemd现在广泛用于Fedora 21、Ubuntu(Ubuntu 15.04以上)、Centos等linux操作系统上;
开发Systemd的主要目的就是减少系统引导时间和计算开销。
Systemd(系统管理守护进程),最开始以GNU GPL协议授权开发,现在已转为使用协议,它是如今讨论最热烈的引导和服务管理程序。如果你的Linux系统配置为使用Systemd引导程序,它取替传统的init进程,启动过程将交给systemd处理。Systemd的一个核心功能是它同时支持init进程的后开机启动脚本。
Systemd引入了并行启动的概念,它会为每个需要启动的守护进程建立一个套接字,这些套接字对于使用它们的进程来说是抽象的,这样它们可以允许不同守护进程之间进行交互。Systemd会创建新进程并为每个进程分配一个控制组()。处于不同控制组的进程之间可以通过内核来互相通信。 cgroups 信息由内核负责维护, 并且可以通过 ename
">/sys/fs/cgroup/systemd/ 接口进行访问。
当作为系统实例运行时, systemd 将会按照 ename">system.conf
配置文件 以及 ename">system.conf.d
配置目录中的指令工作; 当作为用户实例运行时,systemd 将会按照 ename">user.conf
配置文件 以及 ename">user.conf.d
配置目录中的指令工作。
systemd 将各种系统启动和运行相关的对象, 表示为各种不同类型的单元(unit), 并提供了处理不同单元之间依赖关系的能力。
Systemd 的其中一个目标就是简化这些事物之间的相互作用,因此如果你有程序需要在某个挂载点被创建或某个设备被接入后开始运行,Systemd 可以让这一切正常运作起来变得相当容易。
各种不同的单元类型如下:
systemd 能够处理各种类型的依赖关系, 包括依赖与冲突(也就是 requires=
与 指令), 以及先后顺序(也就是
与
指令)。 注意, 上述两种类型的依赖关系(依赖与冲突、先后顺序)之间是相互独立的(无关的)。 举例来说,假定
ename">foo.service
依赖于(requires) ename">bar.service
但并未指定先后顺序, 那么这两个服务将被同时并行启动。 不过在两个单元之间既存在依赖关系也存在先后顺序的情形也很常见。 另外需要注意的是, 大多数依赖关系都是由 systemd 隐式创建和维护的, 因此没有必要额外手动创建它们。
systemctrl是systemd的系统管理的指令,相应指令如下:
简单说,Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit。从这个意义上说,Target 这个概念类似于"状态点",启动某个 Target 就好比启动到某种状态。
传统的init
启动模式里面,有的概念,跟 Target 的作用很类似。不同的是,运行级别是互斥的,不可能多个运行级别同时启动,但是多个 Target 可以同时启动。
它与init
进程的主要差别如下。
(1)默认的 RunLevel(在/etc/inittab
文件设置)现在被默认的 Target 取代,位置是/etc/systemd/system/default.target
,通常符号链接到graphical.target
(图形界面)或者@H_189_83@multi-user.target(多用户命令行)。
(2)启动脚本的位置,以前是/etc/init.d
目录,符号链接到不同的 RunLevel 目录 (比如/etc/rc3.d
、/etc/rc5.d
等),现在则存放在/lib/systemd/system
和/etc/systemd/system
目录。
(3)配置文件的位置,以前init
进程的配置文件是/etc/inittab
,各种服务的配置文件存放在/etc/sysconfig
目录。现在的配置文件主要存放在/lib/systemd
目录,在/etc/systemd
目录里面的修改可以覆盖原始设置;
systemd使用journalctl来管理相应的日志文件;
直接看知乎问题吧:https://www.zhihu.com/question/25873473" target="_blank">https://www.zhihu.com/question/25873473;
以上是大佬教程为你收集整理的systemd的作用全部内容,希望文章能够帮你解决systemd的作用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。