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


相关文章
|
3天前
|
存储 Linux C语言
Linux:冯·诺依曼结构 & OS管理机制
Linux:冯·诺依曼结构 & OS管理机制
9 0
|
1天前
|
Linux 数据库
linux守护进程介绍 | Linux的热拔插UDEV机制
linux守护进程介绍 | Linux的热拔插UDEV机制
linux守护进程介绍 | Linux的热拔插UDEV机制
|
3天前
|
安全 Linux 调度
xenomai+linux双内核下的时钟管理机制
clock是操作系统正常运行的发动机,系统利用时钟中断维持系统时间、促使任务调度,以保证所有进程共享CPU资源;可以说,“时钟中断”是整个操作系统的脉搏。那你是否好奇xenomai cobalt内核和Linux内核双内核共存的情况下,时间子系统是如何工作的?一个硬件时钟如何为两个操作系统提供服务的?本文将揭开xenomai双核系统时间机制
11 0
xenomai+linux双内核下的时钟管理机制
|
7天前
|
存储 监控 Ubuntu
Linux 中常用的 systemd 命令讲解
Linux 中常用的 systemd 命令讲解
|
12天前
|
算法 大数据 Linux
深入理解Linux内核的进程调度机制
【4月更文挑战第30天】操作系统的核心职能之一是有效地管理和调度进程,确保系统资源的合理分配和高效利用。在众多操作系统中,Linux因其开源和高度可定制的特点,在进程调度机制上展现出独特优势。本文将深入探讨Linux内核中的进程调度器——完全公平调度器(CFS),分析其设计理念、实现原理及面临的挑战,并探索未来可能的改进方向。
|
13天前
|
算法 安全 Linux
深度解析:Linux内核内存管理机制
【4月更文挑战第30天】 在操作系统领域,内存管理是核心功能之一,尤其对于多任务操作系统来说更是如此。本文将深入探讨Linux操作系统的内核内存管理机制,包括物理内存的分配与回收、虚拟内存的映射以及页面替换算法等关键技术。通过对这些技术的详细剖析,我们不仅能够理解操作系统如何高效地利用有限的硬件资源,还能领会到系统设计中的性能与复杂度之间的权衡。
|
13天前
|
Linux 开发者
【亮剑】Linux系统中的四种文件锁定机制:flock、fcntl、lockfile和flockfile,用于多进程环境下协调共享资源访问,防止数据损坏和竞争条件
【4月更文挑战第30天】本文介绍了Linux系统中的四种文件锁定机制:flock、fcntl、lockfile和flockfile,用于多进程环境下协调共享资源访问,防止数据损坏和竞争条件。flock适合脚本,fcntl提供底层灵活性,lockfile用于管理锁定文件,flockfile则结合两者功能。选择锁定策略时需考虑应用场景,如脚本可选flock,复杂需求则用fcntl。理解并正确使用这些工具对保证系统稳定性和数据一致性至关重要。
|
19天前
|
缓存 Linux
linux系统缓存机制
linux系统缓存机制
|
26天前
|
算法 Linux 调度
深入理解Linux内核的进程调度机制
【4月更文挑战第17天】在多任务操作系统中,进程调度是核心功能之一,它决定了处理机资源的分配。本文旨在剖析Linux操作系统内核的进程调度机制,详细讨论其调度策略、调度算法及实现原理,并探讨了其对系统性能的影响。通过分析CFS(完全公平调度器)和实时调度策略,揭示了Linux如何在保证响应速度与公平性之间取得平衡。文章还将评估最新的调度技术趋势,如容器化和云计算环境下的调度优化。
|
27天前
|
Linux
Linux systemd 定时任务
Linux systemd 定时任务