Linux--CentOS6和CentOS7的区别

简介: Linux--CentOS6和CentOS7的区别

系统启动流程和服务管理

centos6

   bios加电自检--mbr引导系统--grub菜单--加载内核--init进程初始化

   

centos7

   bios加电自检--mbr引导系统--grub2菜单--加载内核--systemd进程初始化

一、系统启动

1、BIOS(Basic Input Output System 基本输入输出系统 )加电自检、硬件初始化、引导操作系统

2、读取并且执行第一个开机设备中的MBR(Master Boot Record 主引导记录 )的

bootloader(grub程序:Grand unified bootloader 大统一启动加载器 )

3、依据bootloader设置去加载内核,内核开始侦测硬件并加载驱动程序

boot loader主要功能如下:

   提供选单:用户可以选择不同的开机项目

   载入核心文件:直接指向可开机的程序区域来开始操作系统

   转交其他loader:将开机管理功能转交给其他Loader负责


内核在Linux中的存放位置为/boot分区下,主要有2个文件要被加载:

   vmlinuz-3.10.0-514.el7.x86_64 内核文件

   initramfs-3.10.0-514.el7.x86_64.img 虚拟文件系统

可以使用:lsinitrd 命令查看虚拟文件系统。

[root@localhost boot]# lsinitrd initramfs-3.10.0-957.el7.x86_64.img

如果是sysvinit启动程序(linux6版本)

4、内核启动init进程

5、系统初始化

6、init找到/etc/inittab文件,决定系统的运行级别(X)

7、触发相应的运行级别的事件,运行/etc/rcX.d下的脚本

8、执行/etc/rc.local文件,来到登录界面

9、输入用户名密码,进入到系统中    

如果是systemd启动程序(Linux7版本)

GRUB2相较于GRUB一代的提升:更健壮、可移植、更强大。支持

BIOS、uEFI和OpenFirmware,支持GPT和MBR分区表。支持非Linux

系统,如苹果HFS文件系统和Windows的NTFS文件系统

systemd 是 linux 系统中最新的初始化系统(init),它主要的设计目标

是克服 sysvinit 固有的缺点,提高系统的启动速度。systemd 和

ubuntu 的 upstart 是竞争对手,但是时至今日 ubuntu 也采用了


4、在硬件驱动加载成功后,内核会主动呼叫systemd程序,并以

default.target流程开机  

5、systemd执行sysinit.target初始化系统及basic.target准备操作系统

6、systemd启动multi-user.target下的本机与服务器服务

7、systemd执行multi-user.target下的/etc/rc.d/rc.local文件

8、systemd执行multi-user.target下的getty.target及登录服务

9、systemd执行graphical需要的服务

二,Init和Systemd的区别

init


1、启动时间长,init是串行启动,只有前一个进程启动完,才会启动下一个进程


2、启动脚本复杂,Init进程只是执行启动脚本,不管其他事情,脚本需要自己处

理各种情况,这往往使得脚本变得很长


3、由Linux内核加载运行,位于 /sbin/init ,是系统中第一个进程,PID永远为1


对于支持 service 的程序,安装的时候,会自动的在 /etc/init.d 目录添加一

个配置文件。当我们使用 service 控制程序时,比如执行开启httpd的服

务:service httpd start 。那么我们的 service 就会开启 /etc/init.d/httpd

配置文件里面指向的 /usr/sbin/httpd 可执行文件


systemd

1、按需启动服务,减少系统资源消耗。

2、尽可能并行启动进程,减少系统启动等待时间

3、由Linx内核加载运行,位于 /usr/lib/systemd/system,是系统中第一个进程,

PID永远为1


对于支持 systemd 的程序,安装的时候,会自动的在

/usr/lib/systemd/system 目录添加一个配置文件。当我们使用 systemctl

控制该程序时,比如执行开启httpd服务:systemctl start httpd.service 。

那么我们的 systemctl 就会开启 httpd.service 配置里面指向的

/usr/sbin/httpd 可执行文件


如果我们想让该程序开机启动,我们可以执行命令 systemctl enable

httpd,这个命令相当于在 /etc/systemd/system 目录添加一个软链接,指

向 /usr/lib/systemd/system 目录下的 httpd.service 文件。这是因为开机

时,Systemd只执行 /etc/systemd/system 目录里面的配置文件

三,init配置文件和systemd文件的区别

Init 进程的配置文件

/etc/init.d/     服务启动脚本配置文件存放目录

/etc/inittab     默认运行级别配置文件

/etc/init/rcS.conf     系统初始化配置文件

/etc/init/rc.conf     各运行级别初始化的配置文件-

/etc/init/rcS-sulogin.conf    单用户模式启动 /sbin/sushell 环境的配置文件

/etc/init/control-alt-delete.conf        终端下的 ctrl+alt+del 热键操作的配置文件

/etc/sysconfig/init     tty终端的配置文件

/etc/init/start-ttys.conf     配置tty终端的开启数量、设备文件

/etc/init/tty.conf 或 etc/init/serial.conf        控制tty终端的开启

Systemd进程的配置文件

/etc/systemd/system/default.target 取代/etc/inittab文件配置,通常符号链接到 /lib/systemd/system/graphical.target

/run/systemd/system/ 系统执行过程中所产生的服务脚本所在目录

/etc/systemd/system/ 里面存放着不同级别的开启自启服务

/usr/lib/systemd/system/ 和 /lib/systemd/system/ 和,两个文件完全一样,因为lib是/usr/lib的软链接 每个服务最主要的启动脚本设置,类似于之前的 /etc/init.d/

四,运行级别和说明

image.png

注:图形切字符  ctrl+alt+F2(F2-F6)   字符切回图形 alt + F1

查看运行级别:

runlevel : 显示切换前的运行级别 和当前运行级别

systemctl get-default : 显示当前运行级别  

永久设置开机模式:

vim /etc/inittab    #centos6

systemctl set-default multi-user.target/runlevel3    开机默认为文本模式

systemctl set-default graphical.target/runlevel5    开机默认为图形模式

五,Systemd服务管理

     Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。systemd和ubuntu的upstart是竞争对手,从15.04版本开始,Ubuntu也已经采systemd作为其标准的系统初始化系统.


       系统初始化需要做的事情非常多。需要启动后台服务,比如启动 SSHD 服务;需要做配置工作,比如挂载文件系统。这个过程中的每一步都被systemd 抽象为一个配置单元,即 unit。可以认为一个服务是一个配置单元;一个挂载点是一个配置单元;一个交换分区的配置是一个配置单元;

Service unit:系统服务,最常见的类型
Target unit:多个 Unit 构成的一个组,执行环境类型
Device Unit:硬件设备
Mount Unit:文件系统的挂载点
Automount Unit:自动挂载点
Path Unit:侦测特定文件或目录类型的
Scope Unit:不是由 Systemd 启动的外部进程
Slice Unit:进程组
Snapshot Unit:Systemd 快照,可以切回某个快照
Socket Unit:进程间通信的 socket服务
Swap Unit:swap 文件
Timer Unit:循环执行的服务

Rhel6 用 service 和 chkconfig 来管理服务,它是 SystemV 架构下的一个工具。

Rhel7 是用 systemctl  来管理服务,它融合了之前的 service 和 chkconfig 的功能于一体。

可以使用它永久性或只在当前会话中启用/禁用服务。systemctl 是 systemd 架构下的一个工具。

image.png

systemd的一些常用命令:

image.png

RHEL7的服务systemctl脚本存放在:/usr/lib/systemd/目录,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下。每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],每个部分内部是一些等号连接的键值对,注意,键值对的等号两侧不能有空格。

vim /usr/lib/systemd/system/sshd.service 
[Unit] 
Description=OpenSSH server daemon 
Documentation=man:sshd(8) man:sshd_config(5) 
After=network.target sshd-keygen.service 
Wants=sshd-keygen.service 
[Service]
Type=notify 
EnvironmentFile=/etc/sysconfig/sshd 
ExecStart=/usr/sbin/sshd -D $OPTIONS 
ExecReload=/bin/kill -HUP $MAINPID 
KillMode=process 
Restart=on-failure 
RestartSec=42s 
[Install] 
WantedBy=multi-user.target
[Unit]
[Unit]区块通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及
配置与其他 Unit 的关系。它的主要字段如下。
Description:简短描述
Documentation:文档地址
Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit
会启动失败
Wants:与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit
不会启动失败
BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前
Unit 停止运行
Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后
启动
After:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之前
启动
Conflicts:这里指定的 Unit 不能与当前 Unit 同时运行
Condition...:当前 Unit 运行必须满足的条件,否则不会运行
Assert...:当前 Unit 运行必须满足的条件,否则会报启动失败
[Service]
[Service]部分是服务的关键,是服务的一些具体运行参数的设置,只有
Service 类型的 Unit 才有这个区块。它的主要字段如下。
Type:定义启动时的进程行为。它有以下几种值。
Type=simple:默认值,执行ExecStart指定的命令,启动主进程
Type=forking:以 fork 方式从父进程创建子进程,创建后父进程
会立即退出
Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继
续往下执行
Type=dbus:当前服务通过D-Bus启动
Type=notify:当前服务启动完毕,会通知Systemd,再继续往下
执行
Type=idle:若有其他任务执行完毕,当前服务才会运行
ExecStart:启动当前服务的命令
ExecStartPre:启动当前服务之前执行的命令
ExecStartPost:启动当前服务之后执行的命令
ExecReload:重启当前服务时执行的命令
ExecStop:停止当前服务时执行的命令
ExecStopPost:停止当前服务之后执行的命令
RestartSec:自动重启当前服务间隔的秒数
Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括
always(总是重启)、on-success、on-failure、on-abnormal、onabort、on-watchdog
TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数
Environment:指定环境变量
[install]
[Install]通常是配置文件的最后一个区块,用来定义如何启动,以及是否开
机启动。它的主要字段如下。
WantedBy:它的值是一个或多个 Target,当前 Unit 激活时
(enable)符号链接会放入/etc/systemd/system目录下面以 Target
名 + .wants后缀构成的子目录中
RequiredBy:它的值是一个或多个 Target,当前 Unit 激活时,符号
链接会放入/etc/systemd/system目录下面以 Target 名 + .required后
缀构成的子目录中
Alias:当前 Unit 可用于启动的别名
Also:当前 Unit 激活(enable)时,会被同时激活的其他 Unit
注意: 如果服务没有Install段落,一般意味着应该通过其它服务自动调用它们
Target
简单说,Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个
Target 的时候,Systemd 就会启动里面所有的 Unit。从这个意义上说,
Target 这个概念类似于"状态点",启动某个 Target 就好比启动到某种状
态。
传统的init启动模式里面,有 RunLevel 的概念,跟 Target 的作用很类似。
不同的是,RunLevel 是互斥的,不可能多个RunLevel同时启动,但是多个
Target可以同时启动。
//查看当前系统的所有 Target 
$ systemctl list-unit-files --type=target
// 查看一个 Target 包含的所有 Unit 
$ systemctl list-dependencies multi-user.target
//查看启动时的默认 Target 
$ systemctl get-default
//设置启动时的默认 Target 
$ sudo systemctl set-default multi-user.target
//切换 Target 时,默认不关闭前一个 Target 启动的进程,
$ systemctl isolate 命令改变这种行为,
//关闭前一个 Target 里面所有不属于后一个 Target 的进程
$ sudo systemctl isolate multi-user.target
目录
相关文章
|
2月前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
317 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
97 1
Linux系统之Centos7安装cockpit图形管理界面
|
2月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
73 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
2月前
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
1385 4
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
2月前
|
存储 网络协议 Linux
AWS实操-EC2-创建购买linux(centos)EC2服务器
AWS实操-EC2-创建购买linux(centos)EC2服务器
|
3月前
|
NoSQL Linux Redis
linux之centos安装redis
linux之centos安装redis
|
2月前
|
Ubuntu 网络协议 Linux
liunx各大发行版(centos,rocky,ubuntu,国产麒麟kylinos)网卡配置和包管理方面的区别
liunx各大发行版(centos,rocky,ubuntu,国产麒麟kylinos)网卡配置和包管理方面的区别
126 0
|
3月前
|
Linux Python
Linux之centos安装clinkhouse以及python如何连接
Linux之centos安装clinkhouse以及python如何连接
|
3月前
|
Linux
linux之centos安装dataease数据报表工具
linux之centos安装dataease数据报表工具
|
3月前
|
消息中间件 Linux
linux之centos安装rabbitmq
linux之centos安装rabbitmq