Centos7的init

一.内核空间系统启动流程

1.内核空间系统启动流程
1)post:进行加电自检
2)Boot Sequence(bios):选择具有引导程序的设备
3)Bootloader(MBR):提供菜单,将选择启动的内核加载至内存中
4)kernel(ramdisk):为内核提供可加载根文件系统的驱动,以及其他所需内核模块的临时根
5)rootfs:进行根切换
6)/sbin/init:启动用户空间的第一个程序init

2.各版本init程序
1)centos5:SysV init、

2)centos6:Upstart

3)centos7:Systemd

二.systemd

1.systemd的新特性

1.新特性

1.系统引导时实现服务并行启动(针对没有依赖关系的服务,加快其启动速度)
2.按需激活进程(只有在第一次使用时才会启动该进程)
3.系统状态快照(支持回滚至系统过去的某个状态)
4.基于依赖关系定义服务控制逻辑

2.核心概念unit

1.unit:由其相关配置文件进行标识,识别和配置;配置文件中主要包含了系统服务,监听的socket,保存的快照以及其他与init相关的信息,其保存位置为:

1./usr/lib/systemd/system
2./etc/systemd/system(实现开机自动启动的程序,实际为/usr/lib/systemd/system下的符号链接)
3./run/systemd/system

ps:systemd所有管理功能通过unit来实现

2.unit的常见类型:

1.Service unit:文件扩展名为.service,用于定义系统服务
2.Target unit:文件扩展名为.target,用于模拟实现“运行级别”
3.Device unit:文件扩展名为.device,用于定义内核识别的设备
4.Mount unit:文件扩展名为.mount,定义文件系统挂载点
5.Socket unit:文件扩展名为.socket,用于标识进程间通信用到的socket文件
6.Snapshot unit:文件内扩展名为.snapshot,管理系统快照
7.Swap unit:文件扩展名为.swap,用于标识swap设备
8.Automount unit:文件扩展名为.automount,文件系统自动挂载点设置
9.Path unit:文件扩展名为.path,用于定义文件系统中的一个文件或目录

3.关键特性:

1.基于socket的激活机制,socket与程序分离(先给对应程序socket文件,但是仅在使用时激活)
2.基于bus的激活机制(总线上有存在对于某一个服务的访问,基于总线激活)
3.基于device的激活机制(某个设备插入时,自动激活Mount unit,Automount unit,可以实现自动创建设备文件,自动挂载)
4.基于path的激活机制(监控文件或目录是否在,根据其存在与否,可自动进行相对应的另一个进程)
5.系统快照:保存各个unit的当前状态信息于持久存储设备中()
ps:支持先向后兼容sysv init脚本,即/etc/init.d/下的脚本

4.不兼容:systemctl的命令是固定不变的,并且非由systemd启动的服务,systemctl无法与之进行通信

3.管理系统服务(service类型的unit文件)

1.systemctl命令:Control the systemd system and service manager;控制systemd系统和服务管理器

2.systemctl语法:systemctl [OPTIONS...] COMMAND [NAME...]

1.启动:service NAME start(centos 6) => systemctl start NAME.service(centos7)
2.停止:service NAME stop => systemctl stop NAME.service
3.重启:service NAME restart => systemctl restart NAME.service
4.查看状态:service NAME status => systemctl status NAME.service
5.条件式重启:service NAME condrestart => systemctl try-restart NAME.service(若服务已启动,则将其停止后启动,若服务未启动,则不启动该服务)
6.重载或重启服务:systemctl reload-or-restart NAME.service
7.重载或条件式重启服务:systemctl reload-or-try-restart NAME.service

8.查看某服务当前激活状态的与否:systemctl is-active NAME.service
9.查看所有已激活服务:systemctl  list-units --type service
10.查看所有服务(激活与未激活):chkconfig --list => systemctl list-units -t service -all

11.设置服务开机自动启动:chkconfig NAME on => systemctl enable NAME.service
12.禁止服务开机自动启动:chkconfig NAME off => systemctl disable NAME.service
13.查看某服务是否能开机自动启动:chkconfig --list NAME => systemctl is-enabled NAME.service

14.禁止某服务设定为开机自动启动:systemctl mask NAME.service
15.取消此禁止项:systemctl unmask NAME.service

16.查看服务间的依赖关系:systemctl list-dependencies NAME.service

3.相关练习
1)查看

[root@yuki ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值