进程和计划任务管理

文章详细介绍了Linux系统中的引导过程,包括MBR、GRUB和内核的角色。接着讨论了服务管理,特别是systemd的特性,如依赖关系处理、并行启动和服务配置。此外,还涵盖了运行级别的设置和切换,以及如何在系统中修复MBR和GRUB分区问题以及修改密码的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1# 第8章引导和服务

kernel 实现进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能等功能

内核设计流派

  • 宏内核(monolithic kernel):又称单内核和强内核,Unix,Linux把所有系统服务都放到内核里,所有功能集成于同一个程序,分层实现不同功能,系统庞大复杂,Linux其实在单内核内核实现了模块化,也就相当于吸收了微内核的优点。
  • 微内核(micro kernel):Windows,Solaris,HarmonyOS简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护,每种功能使用一个单独子系统实现,将内核功能移到用户空间,性能差。

1引导过程

1.加电检测硬件是否有故障,如果无故障, 就去bios 中设置的第一启动项找操作系统
2.MBR 引导第一个扇区的前446 字节 有一个 grub 程第一阶段,引导硬件找到操作系统 grub 完整的程序
3.grub会根据grub.cfg 配置文件找到操作系统
4加载内核(操作系统)
5.启动程序祖宗进程 centos7 svstemd centos6 init

2服务

2.1systemd服务

1.对比5 6 可以解决依赖关系并行启动

2.按需启动

3.自动解决依赖关系

负责在系统启动或运行时,激活系统资源,服务器进程和其它进程

Systemd新特性

  • 系统引导时实现服务并行启动

  • 按需启动守护进程

  • 自动化的服务依赖关系管理

  • 同时采用socket式与D-Bus总线式激活服务

  • socket与服务程序分离

  • 向后兼容sysv init脚本

  • 使用systemctl 命令管理,systemctl命令固定不变,不可扩展,非由systemd启动的服务,

  • systemctl无法与之通信和控制

  • 系统状态快照

systemd 核心概念:unit

unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听

socket、保存的系统快照以及其它与init相关的信息

在systemd中不同类型的systemd对象被统一称为单元,是让系统知道该如何进行操作和管理资源的主要对象,所以systemd有许多单元类型。
systemd单元文件最初默认存放在/lib/systemd/system目录中,每当安装新的软件都会自动在这个目录中添加一个配置文件。
systemctl 命令用于管理各种类型的systemd单元,可以使用“systemctl -t help”命令来查询systemd支持的单元类型。
单元类型 护展名 说明
Service .service 护展名
Socket .socket 描述一个进程间通信的套接字
Device .device 描述一个内核识别的设备文件
Mount .mount 描述一个文件系统的挂载点
Automoun .automount 描述一个文件系统的自动挂载点
Swap .swap 描述一个内存交换设备或目录
Timer .timer 描述一个定时器(用于实现类似cron的调度任务)
Path .path 描述一个文件系统中文件或目录(path 路径)
Snapshot .snapshot 用于保存一个systemd的状态(snapshot 快照)
Scope .scope 使用systemd的总线接口以编程的方式创建外部进程
Slice .slice 描述居于Cgroup的一组通过层次组织的管理系统进程
Target .target 描述一组systemd的单元(target 目标)

service unit文件格式

unit 格式说明:

  • 以 “#” 开头的行后面的内容会被认为是注释
  • 相关布尔值,1、yes、on、true 都是开启,0、no、off、false 都是关闭
  • 时间单位默认是秒,所以要用毫秒(ms)分钟(m)等须显式说明

service unit file文件通常由三部分组成:

  • [Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等
  • [Service]:与特定类型相关的专用选项;此处为Service类型
  • [Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项

Unit段的常用选项:

  • Description:描述信息
  • After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反
  • Requires:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活
  • Wants:依赖到的其它units,弱依赖
  • Conflicts:定义units间的冲突关系

Service段的常用选项:

  • Type:定义影响ExecStart及相关参数的功能的unit进程启动类型
  1. ​ simple:默认值,这个daemon主要由ExecStart接的指令串来启动,启动后常驻于内存中
  2. ​ forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务。原生父程序在启动结束后就会终止
  3. ​ oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中
  4. ​ dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作.因此通常也要同时设定BusNname= 才行
  5. ​ notify:在启动完成后会发送一个通知消息。还需要配合 NotifyAccess 来让 Systemd 接收消息
  6. ​ idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才执行即可的服务
  • EnvironmentFile:环境配置文件
  • ExecStart:指明启动unit要运行命令或脚本的绝对路径
  • ExecStartPre: ExecStart前运行
  • ExecStartPost: ExecStart后运行
  • ExecStop:指明停止unit要运行的命令或脚本
  • Restart:当设定Restart=1 时,则当次daemon服务意外终止后,会再次自动启动此服务
  • RestartSec: 设置在重启服务( Restart= )前暂停多长时间。 默认值是100毫秒(100ms)。 如果未指
  • 定时间单位,那么将视为以秒为单位。 例如设为"20"等价于设为"20s"。
  • PrivateTmp:设定为yes时,会在生成/tmp/systemd-private-UUID-NAME.service-XXXXX/tmp/目录

Install段的常用选项:

Alias:别名,可使用systemctl command Alias.service

RequiredBy:被哪些units所依赖,强依赖

WantedBy:被哪些units所依赖,弱依赖

Also:安装本服务的时候还要安装别的相关服务

运行级别所对应的Systema目标

在这里插入图片描述

3 设置运行级别

命令格式:

systemctl [command] [unit.target]
command参数:

  get-default :取得当前的target  

  set-default :设置指定的target为默认的运行级别   3 5

  isolate :切换到指定的运行级别

  unit.target :上面列出的运行级别

示例:



init 0        systemctl isolate poweroff.target     systemctl   poweroff       poweroff
init 1        systemctl isolate rescue.target
init 3        systemctl isolate multi-user.target
init 5        systemctl isolate graphical.target    图形
init 6        systemctl isolate reboot.target        systemctl   reboot          reboot


0:关机
1:单用户模式(root自动登录), single, 维护模式
2:多用户模式,启动网络功能,但不会启动NFS;维护模式
3:多用户模式,正常模式;文本界面
4:预留级别;可同3级别
5:多用户模式,正常模式;图形界面
6:重启

systemctl get-default    
#获得当前的运行级别
systemctl set-default multi-user.target   
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
#设置默认的运行级别为mulit-user
systemctl isolate multi-user.target   
#在不重启的情况下,切换到运行级别mulit-user下
systemctl isolate graphical.target   
#在不重启的情况下,切换到图形界面下



systemctl  7  管理工具
chkconfig  6  工具


/etc/init.d   
chkconfig工具:    
格式: chkconfig --list [服务名称]
chkconfig --add 服务名称   
chkconfig --level 级别列表服务名on/off    0-6 7个级别   on off
chkconfig --add httpd
chkconfig --level 35 httpd on

#!/bin/bash 
#chkconfig: - 99 20 
#description:Nginx Service Control Script 
PROG="/usr/local/nginx/sbin/nginx" 
PIDF="/usr/local/nginx/logs/nginx.pid" 

case "$1" in
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


[root@localhost init.d]#ls /etc/rc*.d/
#S开头启用
[root@localhost init.d]#chkconfig --level 3 nginx on


vim 

4 实验

修复mbr分区

1.创建磁盘用于备份mbr引导扇区到其他磁盘
在这里插入图片描述
在这里插入图片描述

2.模拟破坏mbr引导扇区
在这里插入图片描述

3.引导镜像急救模式进行mbr扇区恢复
在这里插入图片描述
在这里插入图片描述
reboot重启可以进入系统即修复成功
在这里插入图片描述

修复grub分区

模拟删除grub.cf 文件2
在这里插入图片描述进入急救模式后,更改环境
在这里插入图片描述

重新建立加载sda分区
在这里插入图片描述

重新构建grub菜单配置文件
在这里插入图片描述在这里插入图片描述

修改密码

启动时任意键暂停启动
按e键进入编辑模式
将光标移动linux 开始的行,添加内核参数 rd.break
按ctrl-x启动
在这里插入图片描述

挂载root修改root密码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值