linux系统开机自启动:init upstart systemd

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统开机自启动:init upstart systemd相关的知识,希望对你有一定的参考价值。

作为一名优秀的工程师或者架构师,我们必须对linux系统有非常良好的理解和掌握。这里介绍下令很多人糊涂的linux自启动。

目前linux有3种初始化系统,按出现的时间依次为init ,upstart和systemd。

3种系统简介

1. init

init即sysvinit,它是system v的成果,被推广到其他unix系统。常见的init 命令和/etc/init.d即属于它。

init的优点来自服务串行启动,可以保证脚本执行顺序,也方便调试和排错。但也因为串行启动导致系统启动时间很长,在linux被应用到移动端后这个缺点成了大问题。此外init需要编写复杂的启动脚本,你可以在init.d里找个文件看看

2. upstart

upstart通过并行启动加快执行速度,但对于相互依赖的服务采用并发启动。它也支持硬件热插拔时的动态启动和卸载。

3.Systemd

systemd的并发更激进,因为对于相互依赖的服务它也同时启动。而且它的按需启动比upstart更优秀。

upstart取代了曾经辉煌的init,而systemd将要取代upstart

两个核心问题

实际上我们最关心的两个问题是如何判断某个linux系统采用了哪种初始化系统,以及如何判断某个服务是由哪个系统初始化或者应该选择由哪个系统初始化

1. 判断初始化系统

初始化进程是kernel启动的第一个进程,其pid始终为1,因此我们使用stat /proc/1/exe可以查看

技术分享

或者根据/usr/lib/systemd /usr/share/upstart /etc/init.d这3个目录是否存在来判断

注意由于systemd和upstart都向后兼容,因此一个系统中可能安装了多个初始化系统

2.判断某个服务器由哪个系统初始化

其实init会将启动服务转交给upstart,而upstart转交给systemd

以上是关于linux系统开机自启动:init upstart systemd的主要内容,如果未能解决你的问题,请参考以下文章

开机启动流程

Linux(CentOS)系统下设置nginx开机自启动

Linux(CentOS)系统下设置nginx开机自启动

jupyter自启动脚本

linux开机自启动命令

Linux下将自己安装的Apache(httpd)新增为系统服务,开机自启动