linux下init机制与systemd管理机制

简介: linux下init机制与systemd管理机制


1、 Linux初始化init系统

 

Linux操作系统的启动首先从BIOS开始,接下来Linux引导程序将内核映像加载到内存,进行内核初始化,内核初始化的最后一步就是启动PID为1的init进程。这个进程是系统的第一个进程,它负责产生其它所有用户进程。

仅仅将内核运行起来是毫无用途的,因此就需要一个系统能够定义、管理和控制init进程的行为,并负责组织和运行许多独立的或相关的初始化工作,从而让系统进入一个用户设定的运行模式中,这个系统就是init系统。

 

大多数Linux发行版的init系统是和System V相兼容的,因此被称为sysvinit,这是最早也是最流行的init系统,在RHEL7.x/Centos7.x发行版本之前的系统中都采用sysvinit,sysvinit概念简单清晰,主要依赖于Shell脚本,但它一次一个串行地启动进程,决定了它的最大弱点:启动太慢。虽然在服务器上这个缺点不算什么,但是当Linux被应用到移动终端设备上时,这个缺点就变成了大问题。为了能更快的启动系统,开发者们对sysvinit进行了不断的改进,先后出现了upstart和systemd这两个主要的新一代init系统,以Ubuntu为代表的Linux发行版就采用的是upstart方式,而在RHEL7.x/Centos7.x版本中,已经默认开始采用systemd来管理系统。Upstart出现很早,而systemd出现较晚,但发展更快,大有取代upstart的趋势。

 

 

2、runlevel到target的改变

 

sysvinit用术语“runlevel”来定义系统运行级别,在RHEL7.x/Centos7.x版本之前的系统中,通常有7种运行级别,每个Linux发行版对运行级别的定义都不太一样。但0、1、6三个级别却获得了共识,含义如下:

Ø0-关机模式。

Ø1-单用户模式:单用户只有系统管理员可以登录。

Ø6-重启模式:也就是执行关闭所有运行的进程,然后重新启动系统。

另外4个运行级别,RHEL/Centos发行版定义的含义为:

Ø2-多用户模式:不支持文件共享,例如不支持NFS服务。这种模式不常用。

Ø3-完全的多用户模式:支持NFS服务。这是最常用的用户模式,默认登录到系统的字符界面。

Ø4-基本不用的用户模式:可以实现某些特定的登录请求。

Ø5-完全多用户模式:默认登录到X-window系统,也就是登录到Linux图形界面。

 

这些运行级别和Linux中的init程序相互对应,例如执行“init 1”命令系统就进入单用户模式,执行“init 6”命令系统将重新启动。

 

在RHEL7.x/Centos7.x以后版本中,默认采用了systemd来管理系统。systemd是新一代init系统,它的主要特点是并发处理所有服务,加速开机流程。由此,以前的运行级别(runlevel)的概念被新的运行目标(target)所取代,tartget的命名类似于“multi-user.target”这种形式,比如原来的运行级别3(runlevel3)对应于新的多用户目标“multi-user.target”,运行级别5(runlevel5)就对应于“graphical.target”。由于systemd机制中不再使用runlevle的概念,所以/etc/inittab也不再被系统使用。

在新的systemd管理体系里,默认的target(相当于以前的默认运行级别)是通过软链来实现。

例如,要查看系统的默认target,可以执行如下图所示命令:

 

要查看运行级与target的对应关系,可以执行“ll /lib/systemd/system/runlevel*.target”命令


 

3、init机制的特点与服务管理方式

 

init管理机制下,所有的服务启动脚本都放置于/etc/init.d/目录,基本上都是使用bash shell所写成的脚本程序,需要启动、关闭、重新启动、查看状态时,可以通过如下的方式来处理:

启动:/etc/init.d/daemon start

关闭:/etc/init.d/daemon stop

重启:/etc/init.d/daemon restart

查看状态:/etc/init.d/daemon status

而要设置服务是否自动运行,可通过如下方法:

设置服务自启动: chkconfig daemon on

关闭服务自启动: chkconfig daemon off

查看服务是否自启动: chkconfig --list daemon

 

 

4、systemd机制下的服务管理方式

 

systemd在系统中是一个用户级的应用程序,它包含了一个完整的软件包,配置文件位于/etc/systemd这个目录下,所有服务脚本位于/usr/lib/systemd/system目录下,这些脚本都已.service结尾。

 

systemd提供了一个非常强大的命令行工具systemctl,可能很多系统运维人员都已经非常熟悉service、chkconfig命令,而systemd也能完成同样的管理任务,可以把systemctl看作是service和chkconfig的组合体。要查看、启动、停止、重启、启用或者禁用系统服务,都可以通过systemctl命令来实现。为了向后兼容,旧的service命令在Centos7.x以后版本中仍然可用,不过它会重定向所有命令到新的systemctl工具。

 

(1)、启动、停止、重启服务

[root@centos8 systemd]#  systemctl start httpd.service

[root@centos8 systemd]#  systemctl stop httpd.service

[root@centos8 systemd]# systemctl  restart  httpd.service

[root@centos8 systemd]# systemctl  try-restart  httpd.service

[root@centos8 systemd]# systemctl  reload httpd.service

 

(2)、查看、禁止、启用服务

通过systemctl命令可以实现启用、禁用服务,以此来控制开机服务启动,可以使用enable/disable选项来控制一个服务是否开机启动,命令如下:

[root@centos8 systemd]# systemctl enable httpd.service

这就打开了httpd服务开机自启动功能。要关闭httpd服务,可执行如下命令:

[root@centos8 systemd]# systemctl disable httpd.service


相关文章
|
9天前
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
28 5
|
12天前
|
Linux 数据库
Linux内核中的锁机制:保障并发操作的数据一致性####
【10月更文挑战第29天】 在多线程编程中,确保数据一致性和防止竞争条件是至关重要的。本文将深入探讨Linux操作系统中实现的几种关键锁机制,包括自旋锁、互斥锁和读写锁等。通过分析这些锁的设计原理和使用场景,帮助读者理解如何在实际应用中选择合适的锁机制以优化系统性能和稳定性。 ####
29 6
|
19天前
|
消息中间件 存储 Linux
|
3月前
|
存储 缓存 编译器
Linux源码阅读笔记06-RCU机制和内存优化屏障
Linux源码阅读笔记06-RCU机制和内存优化屏障
|
2月前
|
存储 监控 安全
探究Linux操作系统的进程管理机制及其优化策略
本文旨在深入探讨Linux操作系统中的进程管理机制,包括进程调度、内存管理以及I/O管理等核心内容。通过对这些关键组件的分析,我们将揭示它们如何共同工作以提供稳定、高效的计算环境,并讨论可能的优化策略。
47 0
|
4月前
|
监控 Unix Linux
|
4月前
|
缓存 监控 关系型数据库
深入理解Linux操作系统的内存管理机制
【7月更文挑战第11天】在数字时代的浪潮中,Linux操作系统凭借其强大的功能和灵活性,成为了服务器、云计算以及嵌入式系统等领域的首选平台。内存管理作为操作系统的核心组成部分,对于系统的性能和稳定性有着至关重要的影响。本文将深入探讨Linux内存管理的基本原理、关键技术以及性能优化策略,旨在为读者提供一个全面而深入的理解视角,帮助开发者和系统管理员更好地优化和管理Linux系统。
|
4月前
|
缓存 网络协议 算法
【Linux系统编程】深入剖析:四大IO模型机制与应用(阻塞、非阻塞、多路复用、信号驱动IO 全解读)
在Linux环境下,主要存在四种IO模型,它们分别是阻塞IO(Blocking IO)、非阻塞IO(Non-blocking IO)、IO多路复用(I/O Multiplexing)和异步IO(Asynchronous IO)。下面我将逐一介绍这些模型的定义:
212 2
|
5月前
|
存储 缓存 Linux
Linux VFS机制详解
Linux VFS机制详解
160 1
|
5月前
|
Linux
Linux异步io机制 io_uring
Linux异步io机制 io_uring
77 1