systemd管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了systemd管理相关的知识,希望对你有一定的参考价值。

一、centos5,6,7启动流程与之前的差别

1、POST
计算机要想开机,他必须通过Bios或UEFI对基本的输入输出硬件设备进行检查,检查内存,CPU,硬盘等等。
2、选择启动顺序(安装时需要选择)
当通过自检后,就需要选择需要用什么引导方式,引导方式大致为:光盘启动、硬盘启动、网络启动、U盘启动,这些只是在安装系统时选择,安装好系统后默认从硬盘启动
3、选择好引导方式后就开始从硬盘的前446字节也就是BootLoader用来引导用户选择启动 的系统或不同版本内核。
centos5.6中,主要的文件放与/boot/grub/grub.cfg引导内核加载文件和/boot/grub/目录下在stage1,stage1.5,stage2阶段所需要的二进制文件
centos7,文件放在/boot/gub2/grub.cfg引导内核加载文件和/boot/grub/目录下stage1,stage1.5,stage2阶段所需要的二进制文件
4、加载内核
利用grub.cfg文件加载硬件启动程序,以只读的方式加载根文件系统,,而在centos5,6在这一步还没有文件系统,而centos7在这一步开始就已经挂载了xfs文件系统也就是stage2步骤
5、运行用户空间的第一个应用程序
centos5:sysv init 配置文件/etc/inittab
centos6:upstart 配置文件/etc/inittab; /etc/init/.conf(主要)
centos7:systemd 配置文件:/etc/systemd/system;/usr/lib/systemd/system/

在centos5,6的第一个父进程名字还是init,而在centos7中第一个父进程则变成systemd
6、在centos5主要根据/etc/inittab文件进行配置
初始化运行级别
调用系统初始化脚本(/etc/rc.d/rc.sysinit)进行系统初始化
对应运行级别的脚本目录
捕获某个关键字顺序
定义UPS电源终端/恢复脚本
在虚拟控制台生成getty
在运行级别5初始化X
centos6和centos5基本类似,只是将inittab文件拆分为多个文件,存放在/etc/init/*.conf
根据/etc/inittab文件确定启动哪一级别,然后根据启动级别按照/etc/rc.d/rc开机将所有S开头的全部开一遍,将所有K开头的全部关一遍来做到根据启动级别启动服务
centos7,则是根据/etc/systemd/system/default.target指向的启动级别,根据运行级别所需要启动的target来启动,并不是跟之前版本一样,将每一个服务在每一个运行级别的目录下放一边,互不干扰,而centos7则是,在当前服务只装当前系统 所必须安装的包,然后一级一级的往上安装,不会出现重复的服务,换句话说,centos7不存在当前的是哪一个运行级别这一说法,因为在graphical.target(图形化)模式下也有multi-user.target(之前版本的3模式)。

二、systemd介绍

systemd服务是系统启动和服务器守护进程管理器,负责在系统启动或运行时激活系统资源,服务器进程和其他进程,在CentOS7中,在系统启动时,将之前的串行启动服务改变成了并行,所以CentOS7系统比之前系统都要启动的快。
systemd新特性
系统引导时实现服务并行启动
按需启动守护进程(只有在需要该服务时,才会启动该服务)
自动化的服务依赖关系管理(若启动服务有其他依赖的服务,则自动启动依赖服务)
同时采用socket式和D-Bus总线式激活服务
系统状态快照

三、unit核心概念

unit表示不同类型的systemd对象,通过配置文件进行标识和配置,文件中主要包括含了系统服务、监听socket、保存系统快照以及其它与init相关的信息

四、相关配置文件

在centos7中,像之前系统中的/etc/init.d/目录下的文件已经几乎没有了,剩下的服务在管理上也已经不是init在管理,已经改变成systemd在管理。
/usr/lib/systemd/system目录下主要存放着每一个服务主要的配置文件类似于之前系统中的/etc/init.d目录
/run/systemd/system目录主要存放着系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/sysyem目录主要存放着管理员建立的执行脚本,类似于之前版本中的/etc/rc.d/rcX.d/目录下的脚本文件,比上面的目录优先级都高

五、unit类型

使用命令systemctl -t help命令可以查看系统中都有哪些unit类型,文件类型的区别在于后缀名
技术分享图片

六、CentOS7服务管理

查看当前服务状态命令
systemctl list-unit-files --type service --all
服务状态说明
loaded:unit配置文件已处理
active(running):一次或多次持续处理运行
active(exited):成功完成一次性配置
active(waiting):运行中,等待一个时间
inactive:不运行
enabled:开机启动
disabled:开机不启动
static:开机不启动,但可被另一个启动的服务激活
启动服务的变化
在之前系统中的服务管理可以是两种方式
service 服务名 start|stop|restart,也可以使用/etc/init.d/服务名 start|stop|restart两种方式,而CentOS7系统中之前的方式还可以使用,只是他们所调用的命令已经变成了systemctl
技术分享图片
systemctl命令语法
systemctl start|stop|restart 服务名1 服务名2
systemctl命令与之前版本的service命令相比的优点在于systemctl命令可以同时启动多个服务
开机自启服务变化
chkconfig --list 查看当前可用该命令可以控制的服务,不过该命令的实质也是在调systemctl命令
技术分享图片
也可以使用chkconfig 服务名 on|off改变开启是否自动启动
而大多数服务已经变成使用systemctl enable|disable 服务名来设置开始是否启动使用systemctl is-enabled 服务名来查看开机是否自动启动
技术分享图片
而开机自动启动的实质就是在/etc/systemd/system目录下创建一个连接文件
条件式启动服务
若服务已启动则才会重启,否则不做任何操作

systemctl try-restart 服务名

重载或重启服务,先加载,在启动

systemctl reload-or-restart 服务名

重载或条件是重启服务

systemctl reload-or-try-restart 服务名

禁用和启用某服务
禁用和启用的实质就是在/etc/systemd/system目录下创建一个链接到/dev/null的软链接使服务不能启动,启用就是将软链接删除
禁用自动和手动启动

systemctl mask 服务名‘

取消禁用

systemctl unmask 服务名

查看服务状态
查看某服务当前是否已激活

systemctl is-active 服务名

查看当前所有已经激活的服务

systemctl list-units -t service

查看所有服务

systemctl list-units -t service -a

查看所有服务开机自启状态
在之前版本中使用的是chkconfig --list而在centos7中则使用systemctl list-unit-files -t service
查看某服务是否开机自启

systemctl is-enabled 服务名

验证当前服务是否活动

systemctl is-actice 服务名

查看服务之间的依赖关系

systemctl list-dependencies 服务名

列出所有单元状态

systemctl或systemctl list-units

只显示服务单元的状态

systemctl -type=service
systemctl -l status 服务名

以上是关于systemd管理的主要内容,如果未能解决你的问题,请参考以下文章

Centos7下的systemd管理

systemd 的网络管理eth0,eth1

systemd配置文件及管理方法详解

systemd 为啥会有那么大的争议

如何在Linux系统上管理Systemd服务

Systemd管理示例