systemd
-
启动流程:
POST -> BIOS -> MBR bootloader -> kernel 临时根 -> 根文件系统 -> init-
init
能够管理、控制init进程的模块,就是init系统
能够让系统在用户预定义的级别下运行
-
init
-
设备管理器:
-
sysvinit : CentOS 5
- 第一个广泛应用的init系统
-
简单、稳定:
-
只需要编写服务的启动脚本
设置启动顺序时,通过连接即可完成
-
只需要编写服务的启动脚本
-
执行效率较高,需要时间较长
- 对新的Linux特性 支持不够好
-
upstart: CentOS 6
-
启动速度大大提高
反向兼容sysvinit
设计更先进
-
启动速度大大提高
-
systemd: CentOS 7
-
替代了所有的sysvinit的功能,并且添加更多的功能。
极大提高了启动速度
标准化管理
按需激活进程:分配套接字,但不启动服务
系统状态快照
-
替代了所有的sysvinit的功能,并且添加更多的功能。
-
systemd配置:
-
核心:unit
由其相关配置文件进行标识、识别和配置;文件中主要包含了系统服务、监听的socket、保存的快照以及其他与init相关的信息;这些配置文件主要保存:- /usr/lib/systemd/system
- /run/systemd/system
- /etc/systemd/system
-
unit常见类型:
-
service类型:服务类型
- 扩展名.service,用于定义系统服务;
-
socket类型:套接字类型
- 扩展名.socket,标示进程间通信时使用到的socket文件
-
device类型:设备类型
- 扩展名.device,定义内核能够识别的设备
-
mount类型:挂载点类型
-
扩展名.mount,定义文件系统的默认挂载点
cgroup:控制组; 实现内核资源合理分配的机制
-
扩展名.mount,定义文件系统的默认挂载点
-
automount类型:自动挂载类型
- 扩展名.automount,定义文件系统自动挂载点设备
-
target类型:启动目标类型
- 扩展名.target 用来模拟实现“运行级别”
-
snapshot类型:快照类型
- 扩展名.snapshot,用来管理系统快照
-
swap类型:交换分区类型
- 扩展名.swap,用来标识swap设备、管理和定义交换分区
-
path类型 监视文件类型
- 扩展名.path,用来定义文件系统的某一文件或目录
-
timer 任务计划
slice 资源控制
scope 外部进程
-
service类型:服务类型
-
关键特性:
-
基于socket的激活机制
socket与程序之间分离,可以先分配socket,不启动; -
基于bus的激活机制
若总线上存在对某一服务的访问,可以基于该请求,将设备激活 -
基于device的激活机制
当接入新设备时,激活device unit、mount unit、automount unit
首先创建设备文件,再自动挂载到某挂载点,若挂载点不存在,则自动创建 。 - 基于PATH的激活机制
-
系统快照
能够将各个unit的当前状态信息保存至持久存储设备中 -
向后兼容 sysv init脚本
/etc/init.d/服务脚本,也能够通过 systemd 启动
-
基于socket的激活机制
-
不兼容的特性:
- systemctl的命令是固定不变的
- 若服务不是通过systemctl启动的服务,那么systemctl无法与之通信,无法控制服务;
-
管理service units
-
CentOS 7:service类型的unit文件
systemctl [OPTIONS…] COMMAND NAME.service
1、命令:service -> systemctl
2、启动服务:service NAME start -> systemctl start NAME.service
3、关闭服务:service NAME stop -> systemctl stop NAME.service
4、重启:service NAME restart -> systemctl restart NAME[.service]
5、查看状态:service NAME status -> systemctl status NAME.service
6、条件式重启:service NAME condrestart -> systemctl try-restart NAME.service
若服务已启动,则重启;若服务未启动,则放弃操作
7、重载或重启:systemctl reload-or-restart NAME.service
可以重载则重载;重新加载未成功,则重新启动
重载:在不停止的情况下重新加载配置文件
重启:先stop再start
8、重载或条件式重启:systemctl reload-or-try-restart NAME.service9、查看服务当前的激活状态:systemctl is-active NAME.service
服务启动则返回active;服务未启动则返回unknown
10、查看所有已激活的服务:systemctl list-units -t service
11、查看所有服务:chkconfig –list -> systemctl list-units -t service -a12、设置服务开机自启:chkconfig NAME on -> systmectl enable NAME.service
13、禁止服务开机自启:chkconfig NAME off -> systemctl disable NAME.service
14、查看服务是否能开机自启:chkconfig –list NAME -> systemctl is-enabled NAME.service15、禁止某服务设定为开机自启:systemctl mask NAME.service
16、取消此禁止:systemctl unmask NAME.service17、查看服务的依赖关系:systemctl list-dependencies NAME.service
-
-
管理target units
1、设置运行级别0 -> runlevel0.target poweroff.target 1 -> runlevel1.target rescue.target 2 -> runlevel2.target multi-user.target 3 -> runlevel3.target multi-user.target 4 -> runlevel4.target multi-user.target 5 -> runlevel5.target graphical.target 6 -> runlevel6.target reboot.target
2、切换运行级别:init N -> systemctl isolate NAME.target
3、查看当前激活的运行级别:runlevel -> systemctl list-units -type target
4、查看当前所有激活的运行级别:runlevel -> systemctl list-units -type target -a5、获取默认运行级别:systemctl get-default
6、修改默认运行级别:systemctl set-default NAME.target
7、centos 6:修改 /etc/inittab8、切换紧急救援模式(启动级别1):systemctl rescue
9、切换emergency模式:其它相关命令:
关机:systemctl halt,systemctl poweroff
重启:systemctl reboot
挂起:systemctl suspend
快照:systemctl hibernate
快照并挂起:systemctl hybrid-sleep -
service units file:
[unit]:定义与unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系; description: 描述信息;意义性描述; after:定义unit的启动次序;表示当前unit应该晚于哪些unit启动;其功能与before相反; requies:依赖到的其他units;强依赖,被依赖的units无法激活,当前unit即无法激活; wants:依赖到的其他units;弱依赖,被依赖的units无法激活,不妨碍当前unit激活 conflicts:定义units间的冲突关系; [service]:与特定类型相关的专用选项;此处为service类型; type:用于定义影响execstart及相关参数的功能的unit进程启动类型; 类型: simple:默认值,定义execstart选项指定的程序是主程序 forking:定义execstart选项调用的某一子进程做主程序,之后父进程会退出。 oneshot: dbus: notify:类似于simple,进程在收到notify函数的通知时才启动 idle:类似于simple ExecStart:指明启动unit要运行命令或脚本;execstartpre,execstartpost ExecStop指明停止unit要运行的命令或脚本; Restart [install]:定义由“systemctl enable”以及“systemctl disable”命令在实现服务启用或禁用时用到的选项; alias wantedby:被哪些units所依赖;弱依赖 requiredby:被哪些units所依赖;强依赖
注意:对于新创建的units文件或修改了的units文件,要通知systemd重载此配置文件;
使用:systemctl daemon-reload
原创文章,作者:s,如若转载,请注明出处:http://www.178linux.com/76532