Linux引导过程与服务控制

news2024/9/23 11:28:15

目录

一、操作系统引导过程

1. 过程图示

2. 步骤解析

2.1 bios

2.2 mbr

2.3 grup

2.4 加载内核文件

3. 过程总结

4. centos6和centos7启动区别

5. 小结

二、服务控制及切换运行级别

1. systemd核心概念

2. 运行级别

3. 运行级别所对应的Systemd目标 

4. Systemd unit单元类型

5. 小结——service文件

三、排除启动类故障

1. 案例一:修复mbr和分区表

1.1 新增硬盘,将备份文件备份到新盘

1.2 模拟破坏

1.3 查看分区表 (十六进制)

1.4 进入急救模式修复

1.5 查看分区表,正常重启 

2. 案例二:修复grup文件及程序

2.1 模拟破坏

2.2 进入急救模式

2.3 切换根

2.4 重新安装grup2程序

2.5 重新生成配置文件

3. 案例三:破解密码

3.1 有光驱

3.1.1 切根

3.1.2 passwd

3.2 无光驱

3.2.1 进入系统,选择内核界面

3.2.2 进入单用户模式

3.2.3 重新挂载,添加读写权限

3.2.4 修改密码,添加标记

四、开机自启配置

1. centos6配置chkconfig开机自启nginx

2. centos7配置systemd开机自启nginx

3. 服务管理相关命令使用

4. 服务程序


一、操作系统引导过程

1. 过程图示

2. 步骤解析

2.1 bios

检测硬件是否正常,根据bios中的启动项设置去寻找内核文件;boot是开机启动程序,可以把内核文件放在:

  • 硬盘
  • 移动设备,u盘移动硬盘,光驱
  • 网络启动

2.2 mbr

也可以称为grupd第一阶段,因为grup太大第一个扇区存不下所有的grup程序,所以分为两部分,mbr的前446个字节 指引硬件找到内核

2.3 grup

根据grup配置文件中记录的位置,去找到内核文件;mbr之后的扇区,让上一阶段中的bootloader(引导加载器,引导硬件去找到内核,操作系统的核心)能识别下一阶段所在的分区上的文件系统

2.4 加载内核文件

把内核运行到内存中,启动第一个“祖宗”进程

[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─anacron───run-parts─┬─awk
        │                     └─man-db.cron───mandb
        ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
……

systemd进程是系统级的程序,代为管理系统上的程序。比如:rpcbind启动会监听111端口,在sleep状态下,如果有需要,systemd会将其唤醒。 

3. 过程总结

加电后bios程序会自检硬件,硬件无故障,会根据第一启动项去找内核,一般来说第一启动项是硬盘;找到硬盘后,会根据mbr的指引找到完整的grup程序,再根据grup的配置文件找到内核文件的具体位置,然后将内核文件加载到内存中运行,内存加载好后会启动第一个程序。

4. centos6和centos7启动区别

  • centos6:init,串行启动后续的进程,一个一个按顺序启动
  • centos7:systemctl,是并行启动程序,全部一起启动

5. 小结

在centos7中,yum及rpm安装的软件可以直接使用systemctl(centos6中使用chkconfig)去启动、关闭、重启、开机自启等功能;编译安装不可以直接使用systemctl命令去管理程序,需要手写配置文件,路径命名:/usr/lib/systemd/system/程序.service

二、服务控制及切换运行级别

1. systemd核心概念

为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内 存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录。systemd即为system daemon,是linux下的一种init软件。在systemd中不同类型的systemd对象被统一称为单元(unit:描述这个软件是做什么的,以及基本信息),是让系统知道该如何进行操作和管理资源的主要对象,所以systemd有许多单元类型。systemd方便管理程序,将程序按照特定的功能分成了很多单元。

2. 运行级别

  • 0:关机
  • 1:单用户,类似于windows的急救模式
  • 2:字符界面,缺少一些功能,如:nfs
  • 3:字符界面
  • 4:字符界面,保留,没用过
  • 5:图形界面
  • 6:重启 

runlevel:查看当前运行级别(如输出3 5,表示之前是级别3,现在是级别5)

systemctl get-default:查看默认的运行级别

systemctl set-default :设置默认级别

如何调整默认级别?

利用init n命令,仅能临时修改运行级别。若想永久修改,需修改默认的运行级别设置。则需要修改配置文件:Centos7 系统之前的版本是通过/etc/inittab文件来定义系统,而 CentOS7 用的是target,centos7修改默认启动级别如下:

[root@localhost ~]# systemctl set-default multi-user.target
#设置默认第三启动级别
[root@localhost ~]# systemctl set-default graphical.target
#设置默认第五启动级别

3. 运行级别所对应的Systemd目标 

运行级别Systemd的target说明
0target关机状态,使用该级别时将会关闭主机
1rescue.target单用户模式,不需要密码验证即可登录系统,多用于系统维护
2multi-user.target用户定义/域特定运行级别。默认等同于3
3multi-user.target字符界面的完整多用户模式,大多数服务器主机运行在此级别
4multi-user.target用户定义/域特定运行级别。默认等同于3
5graphical.target图形界面的多用户模式,提供了图形桌面操作环境
6reboot.target重新启动,使用该级别时将会重启主机

4. Systemd unit单元类型

单元类型扩展名说明
Service.service描述一个系统服务软件
Socket.socket描述一个进程间通信的套接字
Device.device描述一个内核识别的设备文件
Mount.mount描述一个文件系统的挂载点
Automount.automount描述一个文件系统的自动挂载点
Swap.swap描述一个内存交换设备或交换文件
Path.path描述一个文件系统中文件或目录
Timer.timer描述一个定时器 (用于实现类似cron的调度任务)
Snapshot.snapshot用于保存一个systemd的状态
Scope.scope使用systemd的总线接口以编程的方式创建外部进程
Slice.slice描述居于Cgroup的一组通过层次组织的管理系统进程
Target.target描述一组systemd的单元

5. 小结——service文件

 service文件包含:[Unit]、[Service]、[Install]

三、排除启动类故障

1. 案例一:修复mbr和分区表

1.1 新增硬盘,将备份文件备份到新盘

[root@localhost ~]# mount /dev/sdb1 /mnt
[root@localhost ~]# dd if=/dev/sda of=/mnt/mbr count=1 bs=512  #备份mbr第一个扇区
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000177847 秒,2.9 MB/秒

1.2 模拟破坏

[root@localhost ~]# dd if=/dev/zero of=/dev/sda count=1 bs=512  #zero空格写0
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000353442 秒,1.4 MB/秒

1.3 查看分区表 (十六进制)

[root@localhost ~]# hexdump -C -n 512 /dev/sda
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

1.4 进入急救模式修复

1.5 查看分区表,正常重启 

2. 案例二:修复grup文件及程序

2.1 模拟破坏

[root@localhost ~]# cd /boot/grub2
[root@localhost grub2]# ls
device.map  fonts  grub.cfg  grubenv  i386-pc  locale
[root@localhost grub2]# mv grub.cfg /opt                #移除配置文件

2.2 进入急救模式

tip:重启读条迅速按一次Esc,后续参考1.4选项

2.3 切换根

2.4 重新安装grup2程序

2.5 重新生成配置文件

3. 案例三:破解密码

3.1 有光驱

3.1.1 切根

同上步骤读条迅速按Esc,选择CD-ROM,“321”选项,输入命令chroot  /mnt/syssimage切根

3.1.2 passwd

直接输入命令passwd修改密码,完成后exit,重启reboot

3.2 无光驱

3.2.1 进入系统,选择内核界面

3.2.2 进入单用户模式

3.2.3 重新挂载,添加读写权限

3.2.4 修改密码,添加标记

四、开机自启配置

注:以下案例均已默认编译安装了nginx

1. centos6配置chkconfig开机自启nginx

[root@localhost ~]# cd /etc/init.d/
[root@localhost init.d]# vim nginx                       #写入配置
[root@localhost init.d]# chmod +x nginx                  #添加权限
[root@localhost init.d]# chkconfig --add nginx           #将服务加入chkconfig
[root@localhost init.d]# chkconfig --level 35 nginx on   #开启3和5级别自动启动
[root@localhost init.d]# service nginx start             #启动服务
[root@localhost init.d]# ss -natp | grep 80
LISTEN     0      128          *:80                       *:*                   users:(("nginx",pid=5032,fd=6),("nginx",pid=5031,fd=6))
[root@localhost init.d]# chkconfig --list                #查看服务
注:该输出结果只显示 SysV 服务,并不包含              
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

netconsole     	0:关	1:关	2:关	3:关	4:关	5:关	6:关
network        	0:关	1:关	2:开	3:开	4:开	5:开	6:关
nginx          	0:关	1:关	2:关	3:开	4:关	5:开	6:关

配置脚本如下:

#!/bin/bash 
#chkconfig: - 99 20                        #-代表运行级别全不开,第99个启动,第20个关闭
#description:Nginx Service Control Script 
PROG="/ky35/nginx/sbin/nginx" 
PIDF="/ky35/nginx/logs/nginx.pid" 

case "$1" in              #如果命令里面有start,调用变量RPOG
start) $PROG 
;; 
stop) 
kill -s QUIT $(cat $PIDF) 
;; 
restart) 
$0 stop $0 start
;; 
reload) 
kill -s HUP $(cat $PIDF) 
;;
*) echo "Usage: $0 {start|stop|restart|reload}" 
exit 1 
esac 
exit 0

2. centos7配置systemd开机自启nginx

vim /usr/lib/systemd/system/nginx.service
[Unit]     #单元
Description=The nginx HTTP and reverse proxy server
#描述软件的功能,web服务

[Service]  #服务
PIDFile=/apps/nginx/logs/nginx.pid
# 方便使用pid号进行操作,明进程的 pid 号
ExecStart=/apps/nginx/sbin/nginx
#使用绝对路径启动
ExecStop=/usr/bin/kill -s TERM $MAINPID
#杀死进程              发信号
ExecReload=/apps/nginx/sbin/nginx -s reload
#重新加载                       发信号 重新加载
 
[Install]  #安装
WantedBy=multi-user.target
安装子字符界面
systemctl daemon-reload           #重新加载配置
systemctl start 服务              #启动
systemctl status 服务             #查看状态
systemctl stop 服务               #关闭
systemctl restart 服务            #重启
systemctl reload 服务             #重新加载
systemctl enable 服务             #开机自启动
systemctl diaable 服务            #开机不自启
systemctl enable --now 服务       #开机自启,并立即启动
systemctl disenable --now 服务    #开机不自启,并立即关闭
nginx -s stop                     #关闭

3. 服务管理相关命令使用

  • centos6:

service 服务程序 start:开启

service 服务程序 stop:关闭

service 服务程序 restart:重启

service 服务程序 reload:重新加载

service 服务程序 status:状态

  • centos7 :

systemctl start 服务名(1,2,3……):开启,后面可以跟多个服务

systemctl stop 服务名:关闭

systemctl restart 服务名:重启(关闭开启的过程)

systemctl reload 服务名:重新加载

systemctl status 服务名:状态

4. 服务程序

① 一旦运行一直运行不会退出

②  一般是后台运行,不会影响前台的操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1360648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

只会用 xxl-job?更强大的新一代分布式任务调度框架来了!

前言 PowerJob是新一代分布式任务调度与计算框架,支持CRON、API、固定频率、固定延迟等调度策略,提供工作流来编排任务解决依赖关系,能让您轻松完成作业的调度与繁杂任务的分布式计算。 文章来源:https://blog.csdn.net/LY_624/…

虾皮、Lazada店铺流量怎么提升?自养号优势及测评系统如何搭建?

虾皮、Lazada是东南亚地区最大的购物平台之一,吸引了大量的买家和卖家。在竞争激烈的虾皮市场上,如何提升店铺的流量成为许多卖家关注的问题。以下是关于如何提升虾皮、Lazada店铺流量的一些建议。 一、店铺流量怎么提升? 首先,进行优质的…

Redis 给集合元素单独设置过期

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、场景 1.1 消费队列 1.2 Redis实现 二、常见的方案 2.1 为单独的 field 设置过期 2.2 设置整体过期时间 2.3 zset 结合 sc…

java spring mvc 初探 web搭建过程详解

提前准备安装tomcat 设备:mac 第一步:下载 进入官网下载压缩包 注意:如果jdk版本是1.8,则tomcat需要v8才行,否则会报错 https://tomcat.apache.org/ 第二步:解压 解压后路径 /Users/you/Library/tomcat/apache-tomcat-8.5.73 进入此目录 修改配置 code setclasspath.…

小白入门基础 - spring Boot 入门

1.简介 spring Boot是为了简化java的开发流程而构建的,即使是使用springMVC框架,也依然需要大量配置和依赖导入, 这无疑是繁琐的,spring Boot采用了”习惯由于配置“的原则,进行一键化部署,这样极大…

延迟加载:提升性能的隐形利器

引言 想象一下,你正在玩一款大型电子游戏。如果游戏在启动的时候就加载了所有的关卡、角色和道具,那玩家可能需要等待很长时间才能开始游戏,而且大部分内容可能在游戏的初期都不会被用到。显然,这样的做法既低效又耗时。 而延迟加…

LeetCode刷题--- 不同路径

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述动…

SESV:通过预测和纠错实现精确的医学图像分割

SESV: Accurate Medical Image Segmentation by Predicting and Correcting Errors SESV:通过预测和纠错实现精确的医学图像分割背景贡献实验方法Thinking SESV:通过预测和纠错实现精确的医学图像分割 286 IEEE TRANSACTIONS ON MEDICAL IMAGING, VOL. …

3元一平方公里的在线卫星影像

我们为大家分享了免费下载卫星影像的方法。 但让人遗憾的是,该影像的最高分辨率只有10米,需要更高清且比较新的卫星影像,看来还是得付费购买才比较靠谱。 自助选择区县范围 商业卫星影像主要面向企事业单位,一般来讲都比较贵&a…

视频转音频软件哪个好? 11 个高效的视频转音频转换器分享

网络上拥有数百个值得观看和聆听的音乐视频。但要聆听喜爱的音乐,用户必须观看整个视频,即使只有音乐让他们兴奋。那么,如何从视频中提取音频呢?简单的答案是使用视频到音频转换器将视频转换为音频格式并将其保存在您的设备上以供…

Docker资源配额

Docker资源配额指的是对Docker容器或服务在系统资源使用方面的限制。 通过资源配额,可以控制和限制Docker容器可以使用的CPU、内存、磁盘空间和网络带宽等资源。 根据应用程序的需求和系统环境来设置适当的资源配额:过于严格的配额可能导致应用程序性能下…

基于ssm的智慧社区电子商务系统+vue论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

嵌入式科普(9)vscode无法跳转和恢复默认配置

一、目的/概述 二、解决办法 2.1 使能Intelli Sense Engine 2.2 vscode恢复默认配置 2.3 c/c与clangd冲突 嵌入式科普(9)vscode无法跳转和恢复默认配置 一、目的/概述 1、2024年的第一天突然vscode无法跳转,莫名其妙 2、尝试了各种设置和插件都无效,卸…

如何将支持标准可观测性协议的中间件快速接入观测

前言 作为一名云原生工程师,如何将支持标准可观测性协议的中间件快速接入观测云呢?答案是只需要三步。 首先,需要确定您要观测的中间件类型。支持标准可观测性协议中间件可通过观测云的 DataKit 采集到中间件的关键指标。有些中间件自带可观…

c++-智能指针

1、概念 堆内存的对象需要手动使用delete销毁,如果忘记使用delete销毁就会造成内存泄漏。 所以C在ISO 98标注中引入了智能指针的概念,并在C11 中趋于完善。 使用智能指针可以让堆内存对象具有栈内存对象的特性。原理时给需要自动回收的堆内存对象套上一层…

【本科生通信原理】【实验报告】【北京航空航天大学】实验一:通信原理初步

一、实验目的: 熟悉 MATLAB开发环境、掌握 MATLAB基本运算操作;熟悉和了解 MATLAB图形绘制基本指令;熟悉使用 MATLAB分析信号频谱的过程;掌握加性白高斯噪声信道模型 二、实验内容: 三、实验程序: 1、 f…

经历和经验的联系

2023年国内互联网大厂疯狂裁员,还出来了“防御性编程”,“开猿节流,降本增笑”等等词汇。阿里裁员后阿里云宕机多次,腾讯裁员和降级了领导层,这些领导回到大头兵岗位,不能融入一线干活,任务完成…

React基础应用及常用代码

目录 基础知识 babel.config.js js,html,css,Vue,react,angular,nodejs,webpack,less,ES6,commonjs等的关系 ECMAScript 6(ES6) let、const、var 的区别 Webpack、npm、node关系 props和state区别 通用框架类 ES 6 export React React.Fragm…

生信技能33 - gnomAD数据库hg19/hg38 VCF文件批量下载脚本

gnomAD数据库下载地址 gnomAD downloads gnomAD v2.1.1数据集包含来自125,748个外显子组和15,708个全基因组的数据,所有这些数据都映射到GRCh 37/hg 19和GRCh 38/hg 38 两个版本的参考序列。 gnomAD数据库hg19与hg39 VCF文件批量下载脚本 download.sh # 获取当前目录路径…

Spring IOC的四种手动注入方法

手动注入 1.Set方法注入-五种类型的注入1.1 业务对象JavaBean第一步:创建dao包下的UserDao类第二步:属性字段提供set⽅法第三步:配置⽂件的bean标签设置property标签第四步:测试 1.2 常用对象String(日期类型&#xff…