linux第一个用户进程init--systemd

本文是对文章《浅析 Linux 初始化 init 系统,第 3 部分: Systemd》的总结以及网上对systemd的评论,做为学习systemd的第一步,只介绍systemd实现的原理及使用的技术。

systemd的目标:

1,启动更少的程序,程序在使用的时候再启动(很像内核的写时拷贝)

2,在必须启动的程序中,做到最大的并行化

从实现目标来看upstart与systemd是一样的,所以都认为这两个是最大的竞争对手,不过从发展趋势来看,systemd可能会最终胜出(rhel7.0中已经用systemd替换了upstart)。


systemd并发启动原理:

1,提前启动服务需要的socket,这一点类似于inetd的实现

2,通过d-bus技术来解决依赖服务的自动启动

3,通过内核 automounter 模块实现了autofs的功能,这一点可以保证依赖文件系统的服务和文件系统的挂载可以同时进行。


systemd其他特点:

1,使用cgroup技术实现对服务的管理,简单可靠。

2,内部实现了journal替代了syslogd记录日志,安全,简单,日志格式统一。

3,这个项目还在进行中,还有很多其他的功能被加进来


systemd相关命令的使用可以参考http://linoxide.com/linux-command/linux-systemd-commands/


systemd的设计理念很好,但是此项目却是争议比较大的一个项目,其根本原因就是systemd实现了太多的功能,已经不仅仅是一个init了,systemd不仅实现了前面提到的autofs/syslogd的功能,最新版本中也把udev/cron等功能加了进来。如下图(Systemd这个有争议的项目正在接管你身边的Linux发行版)

linux第一个用户进程init--systemd_第1张图片

另外一个很多linux、unix用户都认为systemd违反了unix哲学:做一件事,并且把它做好。


最后分享一个在网上看到的sysvinit与systemd的对比图,忘了从哪个网站保存下来的了,如果有侵权请及时告知,谢谢。

linux第一个用户进程init--systemd_第2张图片

linux第一个用户进程init--systemd_第3张图片

linux第一个用户进程init--systemd_第4张图片


你可能感兴趣的:(linux)